如果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]
干杯戈登。这对我有效。 – Andez 2014-10-24 13:12:42