2012-02-07 46 views
1

我使用DataContextand創建了一個.mdf數據庫。然後我從PC手動刪除數據庫文件。 現在我無法使用DataContextInstance.CreateDatabase();創建具有相同名稱和路徑的數據庫,因爲某處數據庫仍然存在,並且使用DataContextInstance.DeleteDatabase();將不起作用。這就是爲什麼我需要master數據庫來刪除數據庫。如何創建master數據庫?

如何創建主數據庫並刪除我的「myDBname」數據庫?

+1

希望這將幫助你.. http://stackoverflow.com/questions/7775409/database-already-exist-choose-a-different-name-using-createdatabase – 2012-02-07 13:36:58

+0

我看到它但沒有解釋如何做到這一點.. – remi 2012-02-07 13:39:23

+0

你有SQL服務器manazment工作室嗎? – 2012-02-07 13:41:09

回答

0

所以SQL Server Management Studio中服務器資源管理器 ... 添加新連接 + 選擇主數據庫新的查詢DROP DATABASE yourDB

+0

我想通過代碼來完成,而不是手動執行 – remi 2012-02-07 13:43:00

2

master數據庫已經存在,所以不需要恢復它。您可以使用ADO.NET提供程序API刪除數據庫。

using(SqlConnection cn = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=master;Integrated Security=True")) 
{ 
using(SqlCommand cmd = new SqlCommand("drop database yourdbName", cn)) 
{ 
    cn.Open(); 
    cmd.ExecuteNonQuery(); 
    cn.Close(); 
    } 
} 

編輯:

using(SqlCommand cmd = new SqlCommand("drop database [07-02-2012]", cn)) 
{..} 

您需要更改連接字符串,並使用DataContext.DeleteDatabase()方法。

string cnstr = @"Data Source=.\SQLEXPRESS;AttachDbFileName=c:\file.mdf;Integrated Security=true"; 
MyDbContext dx = new MyDbContext(cnstr); 
if (dx.DatabaseExists()) 
{ 
    dx.DeleteDatabase(); 
} 
+0

感謝您的回覆。我試過這段代碼,但在「cmd.ExecuteNonQuery();」引發異常行說「07附近的語法錯誤」。「我的數據庫名稱是「07-02-2012」,所以我用它來代替「empdb」。你知道爲什麼嗎? – remi 2012-02-07 13:55:36

+0

@remi - 試試Drop Database [07-02-2012] – adatapost 2012-02-07 13:56:43

+0

謝謝,解決了語法問題。現在,它會在同一行中拋出異常,說「不能刪除數據庫'07-02-2012',因爲它不存在或者您沒有權限。」 – remi 2012-02-07 13:59:48