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

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

任何方向,欢迎帮助。

【问题讨论】:

    标签: sql sql-server-2008 logging


    【解决方案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 将如何工作?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 2011-08-06
      • 2014-10-16
      • 2011-04-30
      相关资源
      最近更新 更多