T-Sql USE命令:如何处理错误?

时间:2015-07-02 15:38:00

标签: tsql error-handling sql-server-2008-r2

我运行一个脚本,从同一台服务器上的几个数据库中选择数据。

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.

1 个答案:

答案 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