仅在备份成功时删除数据库

Ev.*_*Ev. 3 sql database sql-server backup rollback

这对某些人来说可能很简单,但我还没有找到一个简单的解决方案.

我现在正在自动化一个更大的进程,一步是备份然后删除数据库,然后从头开始重新创建它.

我有一个脚本可以进行备份和删除,如下所示:

Use [Master]
BACKUP DATABASE [databaseName]
  TO DISK='D:\Backup\databaseName\20100122.bak'

ALTER DATABASE [databaseName] 
    SET SINGLE_USER 
    WITH ROLLBACK IMMEDIATE

DROP DATABASE [databaseName] 
Run Code Online (Sandbox Code Playgroud)

但我担心即使BACKUP失败也会发生DROP.

如何更改脚本,如果BACKUP失败,DROP将不会发生?

提前致谢!

小智 5

如果您的SQL Server版本是2005或更高版本,则可以使用try catch包装语句.如果备份失败,它将跳转到catch而不删除数据库...

Use [Master]
BEGIN TRY

BACKUP DATABASE [databaseName]
  TO DISK='D:\Backup\databaseName\20100122.bak'

ALTER DATABASE [databaseName] 
    SET SINGLE_USER 
    WITH ROLLBACK IMMEDIATE

DROP DATABASE [databaseName] 
END TRY
BEGIN CATCH
PRINT 'Unable to backup and drop database'
END CATCH
Run Code Online (Sandbox Code Playgroud)