Sql-Server
簡單地插入臨時表並失敗
誰能告訴我為什麼這對我不起作用?
CREATE TABLE #UndistributedCmds ( pendingcmdcount int, estimatedprocesstime INT ) INSERT INTO #UndistributedCmds EXEC sp_replmonitorsubscriptionpendingcmds ...
錯誤:
消息 8164,級別 16,狀態 1,過程 sp_replmonitorsubscriptionpendingcmds,第 152 行
INSERT EXEC 語句不能嵌套。該錯誤似乎暗示儲存過程定義的第 152 行是問題所在,但我無法理解這一點。發生這種情況是因為儲存過程本身有多個儲存過程嗎?
發生錯誤是因為儲存過程還有一個 #temp 表或表變數,並使用
insert...exec
. 您可以通過查看它來查看它OBJECT_DEFINITION()
:insert into @countab (pendingcmdcount) exec @retcode = sys.sp_MSget_repl_commands
所以基本上你要求這個(虛擬碼):
INSERT INTO #outer EXEC (SELECT * FROM (INSERT INTO #inner EXEC ... ));
insert...exec
由於未知/未記錄的原因,在 SQL Server 中禁止這種呼叫嵌套。典型的解決方法是:SELECT * INTO #UndistributedCmds FROM OPENQUERY([LoopbackLinkedServer], N'EXEC procedure...');
您需要一個引用本地伺服器電腦的連結伺服器,並且需要將屬性“數據訪問”設置為 true…