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 中的错误日志记录的主要内容,如果未能解决你的问题,请参考以下文章

sql server 2008错误日志如何优化自动删除

查看 SQL Server 2008 中的所有事务日志

sqlserver2008日志清除后,数据库反映非常慢

sql server 2008 注册升级时报错

sql server 2008 日志文件已经到了最大值,还会记录日志吗

sql server 2008自动备份出现 出现 执行维护计划. MaintenancePlan (错误)密码和登录名不匹被