SQL Server 2008 中的错误日志记录

Posted

技术标签:

【中文标题】SQL Server 2008 中的错误日志记录【英文标题】:Error logging in SQL Server 2008 【发布时间】:2012-01-16 17:53:01 【问题描述】:

一个非常简短直接的问题:我想使用 try..catch 捕获错误并将其记录到文件中。这在 SQL Server 2008 中是否可行?

任何方向,欢迎帮助。

【问题讨论】:

【参考方案1】:

是的,你可以。

只需按照此处TRY...CATCH 的描述实现try catch。通过将错误写入表,可以在应用程序或 sql 中记录错误日志。

如果你想登录到一个文件,你可以使用 SQLCLR 来实现。在这里查看答案

How to log in T-SQL

您可以检查一些类似的问题。

Logging into table in SQL Server trigger

Best Practices - Stored Procedure Logging

另一种方法是使用Log4Sql

【讨论】:

为什么投反对票?唯一的答案,它带来了一个使用 sqlclr 写入文件的示例。【参考方案2】:

使用 SQL Server Management Studio 或任何文本编辑器查看 SQL Server 错误日志。

默认情况下,错误日志位于Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\LOG\ERRORLOGERRORLOG.n 文件中。

浏览Viewing the SQL Server Error Log页面

【讨论】:

【参考方案3】:

像这样,不完全是文件,而是事件日志,我认为写入文件只能使用 CLR 过程:

BEGIN TRY
  Do some error
END TRY
Begin CATCh
  Declare @error nvarchar(max) = error_message()+' your data'
  exec master..xp_logevent 50001, @error, 'error'
  --Notify host application
   RAISERROR(@error, 16, 1) 
END CATCH

【讨论】:

Msg 102, Level 15, State 1, Line 2 “Do”附近的语法不正确。消息 102,级别 15,状态 1,第 8 行 'error_message' 附近的语法不正确。 @blasto 已更正,但很明显。不是吗? Begin Catch 中的 ROLLBACK 将如何工作?

以上是关于SQL Server 2008 中的错误日志记录的主要内容,如果未能解决你的问题,请参考以下文章