2012-06-03 4 views
5

に既にある(私は、Visual Studio 2010のExpressを使用しています)私のSQL Server 2008 R2へEntity Frameworkを使用してデータベースを作成すると、私は完全に固執します。 のVisual C#とSQL Serverは、私はようやく私のC#アプリケーションを接続する方法を研究していた最後の数日間で使用

私はちょうど私のdbファイルのパスを見つけるVSに新しいデータソースを追加したい

と私は最終的にそれを見つけて、それを選択しようとすると、それは私に

このファイルを示して、エラーがスローされます既に使用されています。

私は2日間データベースファイルを使用していなかったので、ナンセンスのように聞こえますが、新しい名前を入力するか、そのファイルを閉じます。私は最終的に解決策を見つけ出し、SQL Server Configuration Managerに入り、唯一のSQL Serverを再起動しました。

その後、私のデータソース接続が最終的に作品と私は今、私は無敵だと考えていたと私は日の終わりまでに私のコードを記述しますが、数分後、私は別の問題だ:O(私は理由をここに書く)。

私のVSアプリケーションにSQL Serverのの部分を使用すると、SQL Serverが機能しなくなります。私はそこにデータベースを参照することはできません、私は何も変更することはできません、私はクエリを使用することはできません、ただ何も。このデータベースは既に使用中であると私に伝えます。

私は逆の方法でそれを行うとき、それは同じです。

SQL ServerをSQL Server Configuration Manager(SQL Serverを再び使用できるようにする)で再起動してから、たとえばDBクエリタスクSELECT * FROM nameDatabaseを使用します。

は、それから私は、私は、SQL Serverは、いくつかの名前を埋めるために持っているにコンボボックスを持っていると私は、SQL Serverにアクセスできないというエラーが出る私のC#アプリケーションをデバッグしようとしました。 (私は今あなたに正確なエラーを伝えることはできませんが、グーグルでの後、私はそれがSQL Serverがアクセスできないことを意味することにあります)。

誰もがそのコードを見たい場合は、それは次のとおりです。

using (var entities = new PropertyDatabaseEntities()) 
{ 
    var userNames = entities.Login 
       .Select(login => login.Username) 
       .ToArray(); 

    comboboxLogin.Items.Clear(); 
    comboboxLogin.Items.AddRange(userNames); 
} 

しかし、私は、SQL Serverを再起動し、私はそれが動作SQL Serverからのものを使用する前にこのデバッグをオンにします。

一部の人々は、私は私の接続を閉じるわけではない私に言ったが、私は最初にSQL Serverを使用する場合でも、私はまだVSとSQL Serverの間の接続を使用することはできませんので、それは本当のことはできません。

私は本当に立ち往生しています。

*接続文字列

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    </configSections> 
    <connectionStrings><add name="Final.Properties.Settings.PropertyDatabaseConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\PropertyDatabase.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=True" providerName="System.Data.SqlClient" /><add name="LoginEntities" connectionString="metadata=res://*/DataAccess.LoginModel.csdl|res://*/DataAccess.LoginModel.ssdl|res://*/DataAccess.LoginModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\Login.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient" /><add name="PropertyEntities" connectionString="metadata=res://*/DataAccess.PropertyModel.csdl|res://*/DataAccess.PropertyModel.ssdl|res://*/DataAccess.PropertyModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\Property.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient" /><add name="PropertyDatabaseEntities" connectionString="metadata=res://*/DataAccess.PropertyDatabaseModel.csdl|res://*/DataAccess.PropertyDatabaseModel.ssdl|res://*/DataAccess.PropertyDatabaseModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\PropertyDatabase.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient" /></connectionStrings> 
</configuration> 
+0

USINGステートメントをコーディングした方法は、接続が正しく管理され、閉じられていることを意味します。 –

+0

接続文字列を投稿できますか? –

+0

_ "このファイルは既に使用中です。新しい名前を入力するか、別のアプリケーションで使用されているファイルを閉じます。" _は既知のエラーではありません。正確なエラーとはどのような行ですか? – CodeCaster

答えて

1

代わりに、接続文字列でファイル名/パスの論理名を使用してみてください。 I THINK 'AttachDbFileName ='機能は、SQL Server Express Edition用です。しかし、少なくとも生産のために提案されておらず、接続を確立するための推奨方法ではありません。

代わりのファイル名とパス

Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\PropertyDatabase.mdf&quot 

サーバ= localhostを\ SQLEXPR5論理名をTRY;データベース= yourdatabase。ユーザーID = sa;パスワード=;

www.connectionstrings.com

2

AttachDBFilenameを見ては、SQL Expressにユニークです。データベースは単に使用するデータベースの名前です。追加の意味はありません。実動サーバーの場合は、AttachDBFilenameを使用していない可能性が非常に高いです。これは、シングルユーザーモードでの開発と実験には、非常に便利です。あなたは=データソースを変更しなければならなかった

。\本番サーバー上のSQLEXPRESSと接続文字列から

をattachdbfilenameセクションを削除するには、それはあなたを助けることを願っています。

関連する問題