1

Azure でホストされ、2 日前に SQL Azure データベースと通信する Entity Framework を使用する MVC 3 アプリがあります。次に、データベースのスキーマを少し変更したため、SSMS を介してデータベースを削除して再作成し、デフォルトの MVC アプリ ログイン ロール コントロールをサイトに追加したため、アプリケーションを再度公開しました。データベースに接続し、Elmah xml ファイルに記録された次のエラーを取得します。

SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。(プロバイダー: 名前付きパイプ プロバイダー、エラー: 40 - SQL Server への接続を開けませんでした)" source=".​​Net SqlClient Data Provider" detail="System.Data.EntityException

SSMS を使用して SQL Azure データベースに接続できます。SQL Azure データベースに接続された Azure エミュレーターでアプリケーションを実行すると、すべてが完全に実行されますが、公開されると接続が拒否されます。どんな助けでも大歓迎です!

4

2 に答える 2

1

SQL Azure 接続文字列 (EF Model First / Database First を使用) は通常、次のようになります。

<connectionStrings>    
    <add name="SampleEntities" connectionString="metadata=res://*/Models.SampleEntities.csdl|res://*/Models.SampleEntities.ssdl|res://*/Models.SampleEntities.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=tcp:abcdefg.database.windows.net,1433;Database=asdf;User ID=manager@abcdefg;Password=XXXXXX;Trusted_Connection=False;MultipleActiveResultSets=True;Encrypt=True;&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

SQL Azure 接続文字列 (Code First を使用) は通常、次のようになります。

<connectionStrings> 
   <add name="SampleContext" connectionString="Data Source=tcp:abcdefg.database.windows.net,1433;Database=asdf;User ID=manager@abcdefg;Password=XXXXXX;Trusted_Connection=False;MultipleActiveResultSets=True;Encrypt=True" providerName="System.Data.SqlClient" />   
</connectionStrings>

2 番目の接続文字列も、Entity Framework がなくても機能します。

于 2012-07-04T17:34:46.897 に答える
0

正しい SQL Azure サーバー名ではなく、ローカル/オンプレミスの SQL サーバーを持っている構成を Azure に発行したと思います。これでしょうか?インスタンスにリモート接続して、正しい .config と SQL Azure サーバーを検証できますか?

このエラーから、アプリは SQL Azure への接続に TCP/IP を使用しておらず、むしろ名前付きパイプを使用しているように見えます。これは通常、SQL Azure サーバー名が有効な TCP/IP ホストではないことを意味します。

于 2012-07-04T17:07:26.443 に答える