0
我創建了一個數據庫,使用此代碼:如何通過打開的連接刪除生成的mdf文件?
public static void CreateDatabase(string databasePath)
{
AppDomain.CurrentDomain.SetData("DataDirectory", databasePath);
using (var connection = new System.Data.SqlClient.SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=master; Integrated Security=true;;"))
{
connection.Open();
using (var command = connection.CreateCommand())
{
command.CommandText =
String.Format("CREATE DATABASE {0} ON PRIMARY (NAME={0}, FILENAME='{1}')", "CoolDatabase", databasePath + @"\database.mdf");
command.ExecuteNonQuery();
command.CommandText =
String.Format("EXEC sp_detach_db '{0}', 'true'", "CotanDB");
command.ExecuteNonQuery();
}
connection.Close();
}
}
它創建了一個很好的工作.mdf
文件爲我的單元測試。但是,在運行所有測試之後,我想再次移除它,因此不佔用空間。
我嘗試這樣做:
public static void DestroyDatabase(string databasePath)
{
if (File.Exists(databasePath + @"\database.mdf"))
{
File.Delete(databasePath + @"\database.mdf");
}
if (File.Exists(databasePath + @"\database_log.ldf"))
{
File.Delete(databasePath + @"\database_log.ldf");
}
}
但是,這會引發錯誤
的過程,因爲它是被另一個無法訪問「到數據庫\ database.mdf路徑」 文件處理。
所以我試圖關閉所有連接到我的數據庫,所以我可以刪除它並刪除文件。然而,這不起作用:
var server = new Server();
server.KillDatabase(databasePath + @"\database.mdf");
會拋出
無法連接到服務器..
如何毀了我的本地數據庫文件?
編輯:我試着在評論中的答案代碼:後面跟有相同File.Delete代碼
using (var connection = new System.Data.SqlClient.SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=master; Integrated Security=true;;"))
{
connection.Open();
using (var command = connection.CreateCommand())
{
command.CommandText =
String.Format("USE master");
command.ExecuteNonQuery();
command.CommandText =
String.Format("ALTER DATABASE {0} SET SINGLE_USER WITH ROLLBACK IMMEDIATE", "CotanDB");
command.ExecuteNonQuery();
command.CommandText =
String.Format("DROP DATABASE {0}", "CoolDatabase");
command.ExecuteNonQuery();
}
connection.Close();
}
。但是,這將引發:
用戶沒有權限更改數據庫「CoolDatabase」,該 數據庫不存在,或數據庫未處於允許 訪問檢查的狀態。
OFFLINE然後DROP => [如何在SQL Server 2008中強制刪除數據庫](http://dba.stackexchange.com/questions/34264/how-to-force-drop-database-in-sql-server -2008/34265) –