对某些人来说,这可能是一个简单的解决方案,但我还没有找到一个简单的解决方案。
我目前正在自动化一个更大的进程,其中一步是备份然后删除数据库,然后从头重新创建它。
我有一个脚本可以备份和删除,如下所示:

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

ALTER DATABASE [databaseName]
    SET SINGLE_USER
    WITH ROLLBACK IMMEDIATE

DROP DATABASE [databaseName]

但我担心即使备份失败,数据也会下降。
如何更改脚本,以便在备份失败时不会发生删除?
提前谢谢!

最佳答案

如果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

08-25 12:35