小编Cay*_*ian的帖子

如何记录有关存储过程的调试信息

我们有一组相当复杂的存储过程,它们以全天候计划处理事务队列。这些脚本使用许多打印语句来记录正在执行的操作以帮助调试。

我想在生产中运行时保留此信息(作为 SQL Server 代理作业),以帮助在出现问题时进行故障排除。我看过这个网站,它有一个相当好的保存打印输出的方法,但它也有一些缺点(在脚本完成之前输出不可用等)。它还需要我没有经验的 SSIS 或 DTS。

我想过将所有打印语句更改为将语句插入到日志表中。问题是我们需要调试信息的大部分工作都在事务控制之下,如果出现错误,所有日志信息都将与实际事务一起回滚。

有没有人有更好的解决方案或如何使用我在上面看到的任何一个解决方案的想法?

sql-server stored-procedures debugging

5
推荐指数
1
解决办法
8669
查看次数

为什么 SQL Server 中的一些高严重性错误消息没有记录到 Windows 事件日志中?

我们正在运行 SQL Server 2016 企业版,我正在进行一些故障排除,以了解为什么我的警报不起作用(结果是有人在 SQL Server 启动中添加了 -n 参数)。在故障排除过程中,我注意到许多具有高严重性(> = 18)的内置消息未设置为记录到事件日志中。

use master;

select * from sys.messages 
where severity >= 18 and language_id = 1033 and is_event_logged = 0
Run Code Online (Sandbox Code Playgroud)
消息ID 语言_id 严重程度 已记录事件 文本
21 1033 20 0 警告:致命错误 %d 于 %S_DATE 发生。请记下错误和时间,并联系您的系统管理员。
565 1033 18 0 编译查询时服务器中发生堆栈溢出。请简化查询。
613 1033 21 0 在数据库 %d 中找不到分区 ID 为 %I64d 的工作表行集条目。
669 1033 22 0 行对象不一致。请重新运行查询。
683 1033 22 0 尝试在可变长度和固定长度十进制格式之间进行转换时发生内部错误。运行 DBCC CHECKDB 以检查是否有任何数据库损坏。
684 1033 22 0 尝试在压缩和未压缩存储格式之间进行转换时发生内部错误。运行 DBCC CHECKDB …

sql-server

4
推荐指数
1
解决办法
618
查看次数

标签 统计

sql-server ×2

debugging ×1

stored-procedures ×1