SQL 有条件地删除数据库
SQL Dropping database with conditions
我正在为我的研究编写一些脚本来创建和删除数据库。
对于删除数据库,我想检查数据库是否存在 - 但在将 IF 条件与“GO”一起使用时我收到一条错误消息。这就是我打算做的:
If(db_id(N'Testdatabase') IS NOT NULL)
Begin
EXEC msdb.dbo.sp_delete_database_backuphistory @database_name = N'Testdatabase'
GO
use [Testdatabase];
GO
use [master];
GO
USE [master]
GO
ALTER DATABASE [Testdatabase] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
USE [master]
GO
DROP DATABASE [Testdatabase]
GO
END
我尝试按照 link 此处的说明进行操作,其中描述了“SET NOEXEC ON;”的用法,但我无法使其正常工作。 TSQL - How to use GO inside of a BEGIN .. END block?
有人知道我怎样才能达到我的目标吗?如有任何帮助,我们将不胜感激!
无需GO即可使用代码:
If(db_id(N'Testdatabase') IS NOT NULL)
Begin
EXEC msdb.dbo.sp_delete_database_backuphistory @database_name ='Testdatabase'
USE [master]
ALTER DATABASE [Testdatabase] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
USE [master]
DROP DATABASE [Testdatabase]
END
我正在为我的研究编写一些脚本来创建和删除数据库。
对于删除数据库,我想检查数据库是否存在 - 但在将 IF 条件与“GO”一起使用时我收到一条错误消息。这就是我打算做的:
If(db_id(N'Testdatabase') IS NOT NULL)
Begin
EXEC msdb.dbo.sp_delete_database_backuphistory @database_name = N'Testdatabase'
GO
use [Testdatabase];
GO
use [master];
GO
USE [master]
GO
ALTER DATABASE [Testdatabase] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
USE [master]
GO
DROP DATABASE [Testdatabase]
GO
END
我尝试按照 link 此处的说明进行操作,其中描述了“SET NOEXEC ON;”的用法,但我无法使其正常工作。 TSQL - How to use GO inside of a BEGIN .. END block?
有人知道我怎样才能达到我的目标吗?如有任何帮助,我们将不胜感激!
无需GO即可使用代码:
If(db_id(N'Testdatabase') IS NOT NULL)
Begin
EXEC msdb.dbo.sp_delete_database_backuphistory @database_name ='Testdatabase'
USE [master]
ALTER DATABASE [Testdatabase] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
USE [master]
DROP DATABASE [Testdatabase]
END