我运行一个脚本,从同一服务器上的多个数据库中选择数据。
USE db1
SELECT x from tbl1
USE db2
SELECT y from tbl2
... etc.
如果从备份恢复其中一个数据库,则脚本会在 USE 语句上出错。我该如何处理这些错误?尝试 - CATCH 不起作用。
这是在 2008R2 上。
编辑:返回的错误是:
Msg 927, Level 14, State 2, Line 4
Database 'db2' cannot be opened. It is in the middle of a restore.
最佳答案
您可以使用DATABASEPROPERTYEX
获取数据库的当前状态:
SELECT DATABASEPROPERTYEX('db_name', 'Status')
这将输出数据库的当前状态,其中包括数据库是否正在恢复(这将给出“RESTORING
”状态)。
在执行 USE 之前,请执行以下操作:
DECLARE @Status SQL_VARIANT
SELECT @Status = DATABASEPROPERTYEX('db1', 'Status')
IF (@Status = 'ONLINE')
BEGIN
USE db1
-- Do stuff
END
ELSE
BEGIN
-- Do other stuff
END
关于T-Sql使用命令: how to handle errors?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31188949/