ワン「はありませんあなたがする必要がある時に管理スタジオでステップ実行します」 SSMSからprocが実行されているかどうかを確認し、もしあればCustom user configurable SQL Server Profiler eventsを起動することが考えられます。例えば
CREATE PROC foo
AS
DECLARE @debug bit = CASE WHEN APP_NAME() = 'Microsoft SQL Server Management Studio - Query'
THEN 1
ELSE 0 END
DECLARE @userinfo nvarchar(128)
DECLARE @userdata varbinary(8000)
--Do some work here
IF @debug = 1
BEGIN
--Do some custom logging
SET @userinfo = N'Some custom info'
SET @userdata = CAST('Some custom data' AS varbinary(8000))
EXEC sp_trace_generateevent @eventid = 82 /*Use 82-91*/
,@userinfo = @userinfo
,@userdata = @userdata
END
実際に私は通常、以下のようなものを使用していますが。場合によっては、必要に応じてメッセージをログに記録する追加のコード(場合によってはステップとステータス値も含む)をテーブルに追加することがあります。これにより、「フィルタリング可能」要件を満たすことができます。
APP_NAME
が(英語版)SSMSで実行されており、NOWAIT
を使用していることを示す場合を除き、メッセージが印刷されなくなるため、バッファがいっぱいになるのを待つのではなく、メッセージがすぐに印刷されます。 print文の
CREATE PROCEDURE [dbo].[PrintMessage] @message NVARCHAR(MAX),
@PrependCurrentTime BIT = 0
AS
IF APP_NAME() LIKE 'Microsoft SQL Server Management Studio%'
BEGIN
DECLARE @CurrentTimeString VARCHAR(30);
SET @CurrentTimeString = ''
IF @PrependCurrentTime = 1
BEGIN
SET @CurrentTimeString = CONVERT(VARCHAR(19), GETDATE(), 20) + ' '
END
RAISERROR('%s%s',0,1,@CurrentTimeString,@message) WITH NOWAIT
END
多分これはSO http://stackoverflow.com/questions/3829201/sql-select-print-out-results-of-stored-procedue/3832356を助けることができます#3832356 – adopilot