【问题标题】:SQL Dropping database with conditions带有条件的 SQL 删除数据库
【发布时间】:2021-03-02 18:40:43
【问题描述】:

我正在为我的研究编写一些脚本来创建和删除数据库。

为了删除数据库,我想检查数据库是否存在 - 但是在将 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

我尝试点击此处的链接,该链接描述了“SET NOEXEC ON;”的用法,但我无法使其正常工作。 TSQL - How to use GO inside of a BEGIN .. END block?

有人知道我如何实现目标吗?任何帮助将不胜感激!

【问题讨论】:

  • 你应该为你正在使用的 dbms 添加一个标签。 (该代码是特定于产品的。)
  • 感谢您的输入 - 我添加了标签。

标签: sql sql-server database conditional-statements drop


【解决方案1】:

你可以在没有 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 1970-01-01
    • 2011-04-10
    • 1970-01-01
    • 2018-01-15
    相关资源
    最近更新 更多