2

MS SQL 2008 R2では、出力されたメッセージを変数にキャッチできるようにしたいと思います。多くのデータベースでスクリプトを実行する必要があります。メッセージ出力(printまたはraiserrからのメッセージ)をキャッチし、テーブルにログインします。ストアドプロシージャの内部からこれを行う必要があります。

このスクリプトの場合

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を使用してログに記録し(コードをクリーンに保つため)、さらに小さな正規表現を使用してすべてのスクリプトをリファクタリングします。ソリューションは明日準備が整います。どうもありがとう。

4

1 に答える 1

2

おそらく、CLRと次のような手法を使用できます。

http://blogs.msdn.com/b/mattm/archive/2007/09/13/capture-print-messages-from-a-stored-procedure.aspx

しかし、最良のオプションは、おそらく単一のvarchar列を持つ一時テーブルにEXECすることです。

http://msdn.microsoft.com/en-us/library/aa175921%28v=sql.80%29.aspx

于 2012-05-10T21:38:13.143 に答える