0

ASP.NETMVCアプリケーションからSQLAzureに接続すると、次のエラーが発生します。

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

しかし、SQL ServerManagementStudioからSQLAzureに正常に接続できます。また、sqlCMDを使用して接続してみましたが、問題なく接続できました。この例外が発生した場合、実行時に問題が発生するだけです。

4

1 に答える 1

2

接続文字列に問題があるはずです。名前付きパイプ経由で Wi​​ndows Azure SQL データベース (別名 SQL Azure) に接続することはできません。サポートされているプロトコルは TCP のみです。したがって、conn 文字列は次のようになります。

サーバー=tcp:[サーバー名].database.windows.net,1433;データベース=[db_name];ユーザー ID=[ユーザー名]@[サーバー名];パスワード=[パスワード];Trusted_Connection=False;暗号化=True;接続タイムアウト= 30

管理ポータルから接続文字列を取得できます。データベースに移動すると、右側に接続文字列のリンクがあります (新しいポータル)。

SQL Azure 接続文字列の表示 (新しいポータル)

古いポータルもほぼ同じです。

SQL Azure 接続文字列の古いポータル

最後に、ファイアウォール ルールで [他の Windows Azure サービスがこのサーバーに接続することを許可する] を有効にする必要があります。

**** 以下のコメントに従って更新 ****

この接続文字列エントリはどこにありますか? IN web.config、または web.release.config / web.debug.config 内。web.config 変換は開発中は機能せず、パッケージ化する場合のみ機能することに注意してください。このエラーは、ローカルでデバッグするとき、または展開するときに発生しますか?

ローカルの場合、実際に使用している接続文字列を確認できますか?

デフォルトの「ApplicationServices」接続文字列 (apphost.config にあります) があることに注意してください。これは、デフォルトの MVC アプリで「ログイン/登録」しようとすると発生する可能性があります。この接続文字列は、ローカルの SQL Express インスタンスが存在し、実行中であることを前提としています。これは、メンバーシップ プロバイダーとロール プロバイダーの既定の接続文字列です。メンバーシップ プロバイダーの設定を変更しない限り、ログイン/登録、および認証が必要なアクションは実行できません。

于 2012-07-13T06:41:37.387 に答える