
我正在嘗試刪除 MSSQL Server 資料庫,但沒有成功。我嘗試過多種方法,例如
user
ALTER DATABASE my_database
SET RESTRICTED_USER
WITH ROLLBACK IMMEDIATE;
GO
DROP DATABASE my_database;
GO
我也嘗試過右鍵單擊它並將其刪除。
這不起作用,它告訴我“無法刪除資料庫“ima_debts”,因為它目前正在使用”。問題是肯定沒有其他用戶連接到它。事實上,我禁用了資料庫的 TCP/IP 並重新啟動它。
甚至「Microsoft SQL Server Management Studio(管理員)」也沒有連接到它。我已確保登入“master”。
為什麼它告訴我它目前正在使用。我是否可以從檔案系統中刪除目錄或其他內容來刪除該資料庫?
任何幫助,將不勝感激。
謝謝。
答案1
有時,IntelliSense 和/或 Management Studio 會因為您在物件資源管理器中按一下資料庫而將連線掛起。此外,如果您有任何存取資料庫的 SQL 代理作業,這些作業不會透過停用 TCP/IP 來停止。
無論如何,以下腳本將透過在會話中將資料庫置於單一使用者模式來「接管」資料庫,然後將其離線,這樣就沒有人可以連接到它來執行查詢。
然後,您可以使用 Management Studio 或 T-SQL 刪除資料庫。
USE [MyDB];
GO
ALTER DATABASE [MyDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE [MyDB] SET OFFLINE;
GO
答案2
USE [master]
GO
ALTER DATABASE [TestDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
USE [master]
GO
/****** Object: Database [TestDB] Script Date: 11/29/2013 13:40:36 ******/
DROP DATABASE [TestDB]
GO
在 C# 中
public static void DeleteDataBase()
{
using (SqlConnection sqlconnection = new
SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=master;Integrated Security=SSPI;"))
{
sqlconnection.Open();
// if you used master db as Initial Catalog, there is no need to change database
sqlconnection.ChangeDatabase("master");
string rollbackCommand = @"ALTER DATABASE [TestDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE";
SqlCommand deletecommand = new SqlCommand(rollbackCommand, sqlconnection);
deletecommand.ExecuteNonQuery();
string deleteCommand = @"DROP DATABASE [TestDB]";
deletecommand = new SqlCommand(deleteCommand, sqlconnection);
deletecommand.ExecuteNonQuery();
}
}
答案3
當您在 SSMS 中刪除它時,會有一個複選框顯示「關閉現有連線」。預設情況下不選取此複選框。選取該框,與資料庫的任何連線都會終止,以便您將其刪除。