【问题标题】:How to view error log of trigger execution?如何查看触发器执行的错误日志?
【发布时间】:2020-08-14 21:15:00
【问题描述】:

我在尝试插入带有触发器的表时收到此消息。是否有日志可以查看触发器执行错误是什么,以帮助我进行故障排除?

【问题讨论】:

  • 一般来说,不要使用 SSMS 来“编辑”表格中的行。手动编写适当的 DML 语句并使用查询窗口执行它们 - 您将能够看到该语句生成的所有错误和消息。如果您发布触发器,有人可能会提出解决或避免问题的建议。或者您可以向设计数据库/编写触发器的人寻求帮助。
  • 我会添加 - 没有“错误日志”。您可以启动(已弃用的)分析器,但这可能超出您的能力范围。
  • @SMor 谢谢,我确实执行了一个插入语句,并且那里的错误同样模糊。我会看到有关发布触发器的信息。谢谢。

标签: sql sql-server ssms


【解决方案1】:

没有用于显示触发错误的默认事件查看器。

您可以修改触发器以显示错误而不会引发 SQL 错误。像这样:


CREATE TRIGGER Some_Trigger_name
   ON  SomeTable
   AFTER  INSERT,DELETE,UPDATE
AS 
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    BEGIN TRANSACTION;

BEGIN TRY
    -- Insert statements for trigger here

    
END TRY
BEGIN CATCH
    SELECT 
        ERROR_NUMBER() AS ErrorNumber
        ,ERROR_SEVERITY() AS ErrorSeverity
        ,ERROR_STATE() AS ErrorState
        ,ERROR_PROCEDURE() AS ErrorProcedure
        ,ERROR_LINE() AS ErrorLine
        ,ERROR_MESSAGE() AS ErrorMessage;

    IF @@TRANCOUNT > 0
        ROLLBACK TRANSACTION;
    return     
END CATCH;

        
IF @@TRANCOUNT > 0
    COMMIT TRANSACTION;

END
GO

【讨论】:

    猜你喜欢
    • 2011-07-25
    • 2014-02-13
    • 2014-04-05
    • 2016-04-13
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 2017-09-13
    相关资源
    最近更新 更多