gpt4 book ai didi

sql-server - 从存储过程记录 SQL Server 错误

转载 作者:行者123 更新时间:2023-12-02 11:03:21 25 4
gpt4 key购买 nike

我们的应用程序是 Windows 服务(用 C++ 编写的 native .EXE),它调用 SQL Server 中的存储过程。在大多数情况下,存储过程中的错误(在 90% 的情况下,这些错误意味着我们的业务逻辑中出现了问题)会作为异常重新抛出并被我们的服务捕获。然后,它们会记录在运行我们的服务的计算机上的应用程序事件日志中。

但是,我现在需要在存储过程中记录 SQL Server 本身的一些错误。

按照我们用于服务的范例,我想我可以使用 xp_logevent 在事件日志中保存错误信息。

这是记录 SQL Server 错误的推荐方法吗?

FWIW我使用SQL Server 2008

最佳答案

操作方法

您始终可以使用 RAISEERROR() AND LOG。记录到 Windows 应用程序日志和 SQL 错误日志。请注意,严重级别是此处的关键。有一些限制和安全考虑,但您还可以获得一些其他功能。BOL 中的更多详细信息: http://msdn.microsoft.com/en-us/library/ms178592.aspx

你应该

我的观点是,你不应该在 SQL 错误日志中记录任何内容,除非它是由 SQL Server 本身生成的。多种原因:

  1. 如果您的 IT 或 DBA 使用日志分析器或任何其他工具,它可能会针对应用程序问题而不是服务器问题发出警报(这正是他们试图捕获的问题)。
  2. 我从来没有发现在 SQL Server 中解析错误日志有什么乐趣,而且我也不是特别喜欢 SSMS 的处理方式。

我的建议

使用通用日志记录存储过程写入某些错误日志表。一个非常好的模式是

BEGIN TRY
...do your stuff
END TRY
BEGIN CATCH
get the ERROR_LINE(), ERROR_MESSAGE() and friends
execute generic logging procedure
END CATCH

作为奖励,您可以在日志记录过程中使用 SSSB 使其异步而不妨碍主逻辑流

关于sql-server - 从存储过程记录 SQL Server 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5748779/

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