SQL Serverエージェントでsp_executesql
からコマンドを実行しています。このコマンドからメッセージをキャプチャするにはどのようにしてテーブルに記録できるのですか?sp_executesql中に出力されたメッセージの取得
特に、データベースログを切り捨てようとしていますが、これが成功したかどうかを確認したいと考えています。私はエージェントSPのコードスニペットを追加してい:
IF (@truncate = 1)
BEGIN
SET @msg = 'Truncating log ''' + @description + ''' for the ''' + @db + ''' database'
EXEC _LogInsert 'Information', '_Loop', 'Status', @msg
--PRINT 'Attempting to truncate the log file'
SET @sql = N'USE [' + @db + ']' +
'DECLARE @LogFile varchar(128)' +
'SELECT TOP 1 @LogFile = [Name] ' +
'FROM sys.database_files ' +
'WHERE ([Type_Desc] = ''LOG'')' +
'DBCC SHRINKFILE(@LogFile, EMPTYFILE)' +
'DBCC SHRINKFILE(@LogFile, 10) WITH NO_INFOMSGS'
--PRINT 'truncation attempt finished'
EXEC sp_executesql @sql
-- Capture messages from SP
-- SET @msg = 'Truncating log msg ''' + @resmsg + ''' for the ''' + @db + ''' database'
-- EXEC _LogInsert 'Information', '_Loop', 'Status', @msg
END
すべてのメッセージを簡単に取り込むことはできません。ただし、ほとんどの例外をキャッチして、それらに関連付けられたメッセージを記録することができます。 – RBarryYoung