【问题标题】:Drop DB using MSBuild even if in use即使在使用中也使用 MSBuild 删除数据库
【发布时间】:2012-01-27 16:49:44
【问题描述】:

我在我的 MSBuild 文件中使用以下命令来删除数据库

sqlcmd -E -S <ServerName> -Q "DROP DATABASE <DBName>"

但有时我会遇到错误

无法删除数据库,因为它当前正在使用中。

我应该使用什么命令来删除数据库,即使它正在使用中?

【问题讨论】:

  • 关闭所有与数据库的连接,然后尝试 DROP DATABASE 命令。
  • 如何使用 sqlcmd 关闭与数据库的所有连接?

标签: sql-server msbuild sqlcmd


【解决方案1】:

您可以将数据库设置为SINGLE_USER 以删除所有现有连接。

sqlcmd -E -S <ServerName> -Q "ALTER DATABASE <DBName> SET SINGLE_USER WITH ROLLBACK IMMEDIATE"
sqlcmd -E -S <ServerName> -Q "DROP DATABASE <DBName>"

这比遍历每个连接并一个接一个地删除它们更可取,因为某些应用程序会立即重新连接。

【讨论】:

  • 它还会阻止新用户连接;-)
  • @Michael 感谢您发布非常简短的答案而不是链接到它。
【解决方案2】:

终止与数据库的所有连接。见Kill All Active Connections To A Database

现在在上述过程之后发出您的 DROP DATABASE 命令。

【讨论】:

    【解决方案3】:

    请使用以下内容:

    sqlcmd -S servername\instance -Q"use master;DROP DATABASE yourdatabase"
    

    【讨论】:

      【解决方案4】:

      试试这个:

      sqlcmd -S .\MAPS -Q "RESTORE DATABASE Awards FROM DISK = 'C:\Awards_Project
      \Awards_FULL.bak' WITH REPLACE, MOVE 'Awards' to 'C:\Awards_Project\Awards.mdf',
      MOVE 'Awards_log' to 'C:\Awards_Project\Awards.ldf'" 
      

      【讨论】:

        【解决方案5】:

        您也可以重新启动 sql 服务,然后执行 drop,例如在myfile.bat

        @echo off
        REM Requires administrative rights to restart service
        REM open powershell and execute command in administrative mode
        powershell -Command "Start-Process 'cmd' -Verb RunAs -ArgumentList '/c net stop MSSQLSERVER && net start MSSQLSERVER && exit'"      
        echo Please wait ~10 seconds for sql service to restart. 
        Timeout /t 10 /nobreak
        echo Dropping database. 
        sqlcmd -S localhost -Q "drop database [database Name]"
        

        【讨论】:

          【解决方案6】:

          您不能删除正在使用的数据库。 Check link for ref

          【讨论】:

          • 那么,有没有什么方法可以使用 sqlcmd 关闭所有现有的连接?
          猜你喜欢
          • 1970-01-01
          • 2017-07-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-07-28
          • 2014-05-04
          • 1970-01-01
          • 2017-09-24
          相关资源
          最近更新 更多