如果USE [数据库]在SQL Server中失败,则停止执行脚本

问题描述:

通常,在SQL Server脚本中,我将在开始时使用USE [数据库]语句。例如,这将用于模式表创建脚本。如果USE [数据库]在SQL Server中失败,则停止执行脚本

脚本假定数据库已经存在。但是,为了防止意外地对master数据库运行脚本,我只希望脚本终止执行。

所以错误检查和尝试... catch不起作用。

错误检查

USE [MYDATABASE] 

IF @@ERROR <> 0 
BEGIN 
    RAISERROR ('Cannot find database so skipping script creation', 1, 1); 
    GOTO AbortScript 
END 

... 

AbortScript: 
    PRINT 'Aborted!' 

尝试捕捉

BEGIN TRY 
    USE [MYDATABASE] 
    PRINT 'xxxx' 
END TRY 
BEGIN CATCH 

    PRINT 'OOps Errored' 

END CATCH 

你能捕获这些错误?我目前正在使用SQL Server 2008 R2。

检查数据库是否存在第一:

IF (NOT EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = 'mydatabase')) 
BEGIN 
    RAISERROR ('Cannot find database so skipping script creation', 1, 1); 
    GOTO AbortScript 
END; 

USE [MYDATABASE] 
+0

干杯戈登。这对我有效。 – Andez 2014-10-24 13:12:42