gpt4 book ai didi

sql-server - 检索在sp_executesql期间打印的消息

转载 作者:行者123 更新时间:2023-12-03 09:55:14 25 4
gpt4 key购买 nike

我正在通过SQL Server代理中的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

最佳答案

如果将其作为作业运行,则可以从dbo.sysjobhistory中获取所需的数据(至少为DBCC输出或PRINT):

SELECT  jh.[run_date],
jh.[step_name],
jh.[message]
FROM msdb.dbo.sysjobhistory jh
INNER JOIN msdb.dbo.sysjobs j
ON j.[name] = 'job_name' and j.job_id = jh.job_id


另外,请注意 WITH NO_INFOMSGS-这会禁止显示所有信息性消息。

关于sql-server - 检索在sp_executesql期间打印的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40923638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com