Alguém pode me dizer por que isso não vai funcionar para mim?
CREATE TABLE #UndistributedCmds
(
pendingcmdcount int,
estimatedprocesstime INT
)
INSERT INTO #UndistributedCmds
EXEC sp_replmonitorsubscriptionpendingcmds ...
O erro:
Msg 8164, nível 16, estado 1, procedimento sp_replmonitorsubscriptionpendingcmds, linha 152
Uma instrução INSERT EXEC não pode ser aninhada.
O erro parece implicar que a linha 152 da definição do procedimento armazenado é o problema, mas estou tendo problemas para entender isso. Isso está acontecendo porque o próprio procedimento armazenado tem vários procedimentos armazenados dentro dele?
O erro está acontecendo porque o procedimento armazenado também possui uma tabela #temp ou variável de tabela e insere nela usando
insert...exec
. Você pode vê-lo olhando para o seuOBJECT_DEFINITION()
:Então, basicamente, você está pedindo isso (pseudo-código):
Esse aninhamento de
insert...exec
chamadas é proibido no SQL Server, por motivos desconhecidos/não documentados. A solução típica é:Você precisará de um servidor vinculado que faça referência à máquina do servidor local e precisará do atributo "acesso aos dados" definido como verdadeiro...