0

OK、私は困惑しています。私は、Entity Frameworkを介してデータベースと対話する.NET Winformsアプリケーションを作成しようとしています。私はもともと、失敗した後にデータベースと話すことができるASP.NET MVC3アプリ(別々のDALレイヤーを持つ)を作成しました。最初に接続を開こうとすると、タイムアウトになります。ブラウザでF5キーを押すと、正常に接続されます。 私はこのDALをWinformsアプリケーションで参照しました。エンティティの例外:Timeoutが有効期限切れで、基になるプロバイダーが開けませんでした

  • SQL Management StudioのSQL Authを使用してデータベースに接続できます。
  • 私はVS2010でADO.NET Dataクラスを作成できます(接続してテーブルを取得し、app.configに接続文字列を格納します)。
  • ただし、Winformsアプリケーションを実行すると、接続できません。 InnerExceptionが "Timeout expired"という例外が発生しました。

web.configからapp.configに接続文字列をコピーしました。

SQLデータベースは、WindowsホームサーバーSERVERでホストされています。私はワークグループ(ドメインなし)にいます。 Management StudioとVSでSERVER \ SQLEXPRESSを使用して正常に接続します。私が試した

もの:

  • クライアントマシン上でファイアウォールを無効にします。
  • サーバー上のDTCを有効にし、msdtc.exeをサーバーの除外リストに追加しました。
  • 名前付きパイプがSQLサーバーインスタンスで有効になっていることを確認しました。
  • 異なるSQLユーザーが試行しました。
  • C#で接続を構築するさまざまな方法を試してみました。
  • 私のWinFormsプロジェクト(DALを参照していない)にローカルな新しいADO.NETデータクラスを生成しました。 VSは正常に接続し、テーブルを読み取り、コードを生成します。しかし、実行中のアプリケーションは、 "Timeout Expired" SqlExceptionを引き起こします。

アプリの実行中に接続できません。 ProcessExplorerでアプリを見ると、SYN_SENTメッセージでリモートポート4845に接続しようとすると、TCPウィンドウにエントリが表示されます。それが正しいかどうかは分かりません。

私はgoogle'dとbing'dここ数日間、私はこの例外を言及Stackoverflow上のすべての記事と返信をここで読んだが、私は壁にヒットしました。感謝

<add name="LLDBEntities" connectionString="metadata=res://*/LLDB.csdl|res://*/LLDB.ssdl|res://*/LLDB.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=SERVER\SQLEXPRESS;initial catalog=LLDB;persist security info=True;user id=sa;password=sapwd;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

すべてのヘルプ、何が起こっているのかを把握する方法についても、任意のヒント:

この

は、VSがDBを読んだ後に生成のConnectionStringです。

+0

saパスワードを変更したい場合があります:) –

+1

これは単なるプレースホルダです:-)実際のものではありません。 –

答えて

1

[OK]を、解決:

は、SQL Expressへの接続文字列のために、このを見てください。

同じアプリと接続で2回目の試行で実際に接続することに気付きました。その時点で、私はこのリンクを見つけました:http://kromey.us/2011/06/microsoft-sql-server-2008-times-out-on-first-connection-attempt-447.html

私は、インスタンスのTCP/IPプロパティで、SQL Server Configuration ManagerのIPAll Dynamic Portの下にリストされたファイアウォールポートを開きました。私はまだそれが2回目の試みで終わる理由は分かりません....

1

接続文字列は、SQL ExpressではなくSQL Serverへの接続文字列のように見えます。 SQL Server Express connection string for Entity Framework Code First

+0

Hmmm。そのページには、私のConnectionStringに "Database ="または "Initial Catalog ="があると書かれています。 SQL Serverは別のマシン上にあることに注意してください。 "AttachDBFilename ="フィールドを追加すると、 "... ConnectionStringで開くことができませんでした"という接続が失敗します。 –

+0

SQL Management Studioを使用してデータベースにアクセスするときにWindows認証を使用していますか? –

+0

いいえ、SQL Auth、前述のとおりです。 –

関連する問題