我在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的限制吗?
答案 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年。