한 "하지 않는 관리 Studio를 통해 단계 당신이 필요로 할 때까지" 접근 방식은 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
을 사용하는 경우를 제외하고는 메시지가 인쇄되는 것을 중지합니다. 따라서 메시지는 버퍼가 채워지기를 기다리지 않고 즉시 인쇄됩니다. 인쇄 문
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