同じデータ センター内の SQL Azure データベースと通信する azurewebsites に単純な mvc Web サイト (VS インターネット テンプレートを使用) があります。この時点でのデータベースは、組み込みの SimpleMembership Provider を実行するだけです。既定の App_Data mdf ファイルから Azure SQL に既に切り替えています。正常に動作しますが、しばらくすると次のようになることがあります。
SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。(プロバイダー: SQL ネットワーク インターフェイス、エラー: 26 - 指定されたサーバー/インスタンスの検索中にエラーが発生しました)
長いメッセージで:
SQLExpress データベース ファイルの自動作成エラー:
接続文字列は、アプリケーションの App_Data ディレクトリ内のデータベースの場所を使用して、ローカルの Sql Server Express インスタンスを指定します。プロバイダーは、データベースが存在しないと判断したため、アプリケーション サービス データベースを自動的に作成しようとしました。アプリケーション サービス データベースの存在を正常に確認し、アプリケーション サービス データベースを自動的に作成するには、次の構成要件が必要です。
しかし、SQL Server Express を使用した接続文字列がありません!
Web サイトをすぐに再起動しても、エラーは解消されません。
何も変更せずに、15 分後に Web サイトを再起動すると、次のようになります。
502 - ゲートウェイまたはプロキシ サーバーとして機能しているときに、Web サーバーが無効な応答を受信しました。
お探しのページに問題があり、表示できません。Web サーバー (ゲートウェイまたはプロキシとして機能している間) が上流のコンテンツ サーバーに接続したときに、コンテンツ サーバーから無効な応答を受け取りました。
以前は、VS から再公開するだけで、Web サイトを正常な状態に戻すことができました。しかし、この 1 時間、試行錯誤しましたが、Web サイトを再び機能させることができません。
SQL Server Express の問題は実際には何ですか?
私の接続文字列セクションは次のとおりです。
<connectionStrings>
<add name="DefaultConnection" connectionString="Server=tcp:sabl6h4---.database.windows.net,1433;Database=MVC;User ID=test@sabl6h4---;Password=----;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;" providerName="System.Data.SqlClient" />
<add name="Entities" connectionString="metadata=res://*/Data.Model1.csdl|res://*/Data.Model1.ssdl|res://*/Data.Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=sabl6h4---.database.windows.net;initial catalog=MVC;user id=test;password=----;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
念のため、sabl6h4---.database.windows.net をコピーして SSMS に貼り付け、ログイン テストを使用して接続したところ、問題なくデータベースが開かれました。
1 日後: 新しい azurewebsite を作成し、まったく同じプロジェクトと同じ web.config を公開しました。問題なく正常に動作します。数分後、まったく同じエラーが発生しました。
さらに 3 時間後: ランチに行って戻ってきて、ブラウザの [更新] ボタンをクリックすると、Web サイトが再び表示されます。誰かがバックエンドの設定をいじっていると確信しています。