【发布时间】:2013-09-11 11:40:52
【问题描述】:
如何在 SQL Server 2008/2012 中获取所有状态错误?
我在我的存储过程中使用Try catch 块来获取错误消息并在发生任何错误时返回错误消息。
我正在尝试更改与其他对象关联的一个表列,因此当我更改该列数据类型时,SQL Server 会返回错误
ALTER TABLE ALTER COLUMN Abc_col1 失败,因为一个或多个对象访问此列。
当我在 Sql 中仅执行更改脚本时,它会给我 2 条错误消息,如下所示
消息 5074,第 16 级,状态 1,第 1 行
对象“fn_Abc_state”依赖于列“Abc_col1”。
消息 4922,第 16 级,状态 9,第 1 行
ALTER TABLE ALTER COLUMN Abc_col1 失败,因为一个或多个对象访问此列。
当比较两个消息时,只有 state 不同
我的问题是在执行我的 Sp 和状态时我们如何获取所有错误消息,如下所示
State 1 = The object 'fn_ABC_state' is dependent on column 'Abc_col1 '.
State 9 = ALTER TABLE ALTER COLUMN Abc_col1 failed because one or more objects access this column.
【问题讨论】:
-
SELECT * FROM sys.[messages]为您提供 SQL Server 系统中定义的所有消息。它们将与哪个状态关联取决于错误发生的地点和时间,并且无法提前存储在此系统目录视图中 -
你好 marc_s,但我如何从 sp 获得它?一直以来,我只收到一个错误,即 ALTER TABLE ALTER COLUMN Abc_col1 failed 因为一个或多个对象访问此列。
标签: sql sql-server sql-server-2008