在MS SQL 2008 R2上,我希望能夠將消息輸出到變量中。我需要在許多數據庫上運行腳本。捕獲消息輸出(來自print或raiserror的消息)並將其記錄到表中。我需要從存儲過程中完成此操作。如何將MSSQL PRINT輸出存儲到變量
對於此腳本
Declare @sqlscript nvarchar(500)
Set @sqlscript =
'select * from sys.objects
raiserror (''My raised error'', 10,1)
select * from sys.schemas
print ''my print'''
EXEC sp_executesql @sqlscript
我想獲得
My raised error
my print
或
(60 row(s) affected)
My raised error
(21 row(s) affected)
my print
更新
我決定去與@rs建議。登錄到桌面是我最簡單的方法。使用SP記錄(以保持代碼清潔),再加上一個小的正則表達式來重構我的所有腳本。解決方案將爲明天做好準備。非常感謝。
在你的exec語句後面檢查'@@ error','@@ rowcount'例如:'SELECT @@ rowcount' –
sp_executesql後,@@ error和@@ rowcount都爲0,因爲最後一個statem恩是一個印刷品。它只會給我提供最後一條語句的信息,而不會執行完整的腳本。 –
你可以使用插入到表而不是打印?用'插入到logtable(msg)值'('print')替換'print'我的print''' –