【问题标题】:Drop DB but don't delete *.mdf / *.ldf删除 DB 但不删除 *.mdf / *.ldf
【发布时间】:2015-10-15 16:48:00
【问题描述】:

我正在尝试自动化分离和删除数据库的过程(通过 VBS objshell.run)如果我手动使用 SSMS 进行分离和删除,我可以将数据库文件复制到另一个位置......但是如果我使用:

sqlcmd -U sa -P MyPassword -S (local) -Q "ALTER DATABASE MyDB set single_user With rollback IMMEDIATE"

然后

sqlcmd -U sa -P MyPassword -S (local) -Q "DROP DATABASE MyDB"

它分离/删除然后删除文件。如何在没有删除的情况下获得分离和删除?

【问题讨论】:

    标签: sql sql-server-2008 sqlcmd


    【解决方案1】:

    DROP DATABASE 上的 MSDN 文档有这样的说法,即删除数据库而不删除文件(在一般备注下):

    删除数据库会从 SQL Server 实例中删除数据库,并删除数据库使用的物理磁盘文件。如果数据库或其任何文件在删除时处于脱机状态,则不会删除磁盘文件。可以使用 Windows 资源管理器手动删除这些文件。 要从当前服务器中删除数据库而不从文件系统中删除文件,请使用sp_detach_db

    因此,为了让您在不使用 sqlcmd 删除文件的情况下删除数据库,您可以将其更改为:

    sqlcmd -U sa -P MyPassword -S (local) -Q "EXEC sp_detach_db 'MyDB', 'true'"
    

    免责声明:老实说,我以前从未使用过 sqlcmd,但从其使用方式的语法假设,我相信这应该可以帮助您解决问题。

    【讨论】:

      【解决方案2】:

      使用 SET OFFLINE 而不是 SET SINGLE_USER

      ALTER DATABASE [DonaldTrump] SET OFFLINE WITH ROLLBACK IMMEDIATE; DROP DATABASE [DonaldTrump];
      

      【讨论】:

        【解决方案3】:

        最好是分离数据库而不是删除它吗? 如果你删除数据库,这意味着删除

        但是请注意,这会使您的硬盘上堆满您不再需要的数据库文件 - 几年后您的继任者将耗尽空间,并想知道为什么磁盘上充满了他没有的 MDF 文件。认识

        【讨论】:

        • 这没有提供问题的答案。一旦您有足够的声誉,您就可以对任何帖子发表评论;相反,提供不需要提问者澄清的答案。
        猜你喜欢
        • 1970-01-01
        • 2014-05-20
        • 2015-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-17
        • 2021-09-27
        • 2021-12-02
        相关资源
        最近更新 更多