SQL Server 2005 - Error_Message()未显示完整消息

时间:2008-10-21 14:36:37

标签: sql-server sql-server-2005 error-handling try-catch

我在Try / Catch中封装了一个备份数据库命令,看起来错误信息正在某处丢失。例如:

BACKUP DATABASE NonExistantDB TO DISK = 'C:\TEMP\NonExistantDB.bak'

..给出错误:
无法在数据库'NonExistantDB'的sysdatabases中找到条目。找不到具有该名称的条目。确保正确输入名称。 BACKUP DATABASE异常终止。

鉴于:

BEGIN TRY
    BACKUP DATABASE NonExistantDB TO DISK = 'C:\TEMP\NonExistantDB.bak'
END TRY
BEGIN CATCH
    PRINT ERROR_MESSAGE()
END CATCH

...仅出错: BACKUP DATABASE异常终止。

有没有办法获取完整的错误消息,或者这是try / catch的限制吗?

2 个答案:

答案 0 :(得分:3)

这是try / catch的限制。

如果仔细查看执行

生成的错误
 BACKUP DATABASE NonExistantDB TO DISK = 'C:\TEMP\NonExistantDB.bak'

你会发现有两个错误被抛出。第一个是msg 911,表示

  

无法在数据库'NonExistantDB'的sysdatabases中找到条目。禁止入内   发现有这个名字。确保正确输入名称。

第二个是您正在显示的3013消息。基本上,SQL只返回最后一个错误。

答案 1 :(得分:0)

这是一个限制,我刚刚遇到了SQL 2005中的try / catch块。我不知道它是否仍然存在于2008年。

SQL 2005 Error Handling