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