【发布时间】:2012-12-21 10:20:54
【问题描述】:
我有一个包含USE DATABASE 语句的脚本。
如果数据库存在,脚本运行得非常好。如果它不存在,它会失败并显示“数据库不存在”消息,这很有意义。
现在,我不会失败,所以我添加了一个检查来选择数据库是否存在于 sys.databases 上(为了简单起见,我将在这里用IF 1=2 检查来表示),所以,如果DB 存在(1=1),然后运行“use”语句。
令我惊讶的是,脚本一直失败。所以我尝试添加一个 TRY CATCH 块。结果相同。 似乎 use 语句是在其他任何事情之前评估的,这很烦人,因为现在我的脚本可能会中断。
所以我的问题是:我怎样才能在脚本上对可能不存在的数据库使用 use 语句?
BEGIN TRY
IF (1=1) BEGIN --if DB exists
USE DB_THAT_MAY_NOT_EXIST
END
END TRY
BEGIN CATCH
END CATCH
【问题讨论】:
-
这个脚本@Diego 有多大?完全限定您的表名可能更容易,并将整个脚本包装在
if exists...中,但这完全取决于如果数据库不存在存在时您想要做什么。 -
另外,this question 可能是一个潜在的重复项。
标签: sql sql-server sql-server-2008-r2