Error_Message()如何工作?

时间:2015-07-14 05:38:37

标签: sql sql-server tsql

Error_Message()函数如何工作以及存储的错误数据存储在哪里?

我必须编写一些代码来读取当前引发但尚未处理的所有错误(CATCH块未到达结束,在我们的数据库中,CATCH块需要几分钟才能完成。现在的问题是:

我在哪里可以获得与引发错误相关的数据?

改进(更新):假设我有这样的代码:

BEGIN TRY
  DECLARE @a INT = 1 / 0
END TRY
BEGIN CATCH
  PRINT ERROR_MESSAGE() 
  -- What can I write instead of ERROR_MESSAGE() to get the same result?
END CATCH

1 个答案:

答案 0 :(得分:1)

它取决于您在错误中获得的错误严重级别

消息547, Level 16 状态0,第11行

INSERT语句与FOREIGN KEY约束冲突" FK_Products_ 分类"

  1. 作为一般规则,严重性级别为16或更高的错误是 自动记录到SQL Server日志和Windows 应用程序日志。
  2. 可以指定严重性级别为19到25的错误 仅限sysadmin固定服务器角色的成员。
  3. 严重程度从20到25的错误被视为致命错误 并导致连接终止和任何打开的事务 回滚。
  4. 严重性级别0到10的错误仅供参考。
  5. 我的第一点你可以在SQL服务器日志和窗口应用程序日志中获得错误

    用于SQL Server日志

    管理中的对象资源管理器➪SQLServer日志节点列出了 日志。双击日志将打开SQL Server的酷日志文件查看器

    enter image description here

    对于窗口应用程序日志

    控制面板➪系统 和安全➪管理工具➪事件查看器。

    enter image description here