2012-02-07 13 views
1

DataContextを使用して.mdfデータベースを作成しました。それから、私はPCから手動でデータベースファイルを削除しました。 DataContextInstance.CreateDatabase();を使用して同じ名前とパスのデータベースを作成することはできません。データベースがまだ存在するため、DataContextInstance.DeleteDatabase();を使用すると機能しません。そのため、データベースを削除するにはmasterデータベースが必要です。マスターデータベースの作成方法は?

マスターデータベースを作成し、「myDBname」データベースを削除するにはどうすればよいですか?

+1

希望これは..あなたを助ける http://stackoverflow.com/questions/7775409/database-already-exist-choose-a-different-name-using-createdatabase私はそれを見た –

+0

しかし、それを行う方法はありません.. – remi

+0

あなたはSQL Serverの管理スタジオを持っていますか? –

答えて

0

のでSQL Server Management Studioのまたはサーバーエクスプローラ中... + 選択masterデータベース新しいクエリドロップデータベースyourDB新しい接続を追加します。

+0

私はコードでそれをやりたいのですが、手動ではありません。 – remi

2

マスターデータベースは既に存在するため、復元する必要はありません。 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(); 
    } 
} 

EDIT:

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

+0

@remi - Dropデータベースを試す[07-02-2012] – adatapost

+0

ありがとう、それは構文の問題を解決しました。今度は同じ行に「データベース'07 -02-2012 'を削除できません。存在しないか、権限がありません」という例外がスローされます。 – remi

関連する問題