我运行一个脚本,从同一台服务器上的几个数据库中选择数据。
USE db1
SELECT x from tbl1
USE db2
SELECT y from tbl2
... etc.
如果正在从备份还原其中一个数据库,则脚本会在USE语句中出错。我该如何处理这些错误? TRY - CATCH不起作用。
这是在2008R2。
编辑:返回的错误是:
Msg 927, Level 14, State 2, Line 4
Database 'db2' cannot be opened. It is in the middle of a restore.
答案 0 :(得分:1)
您可以使用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