ITエンジニア向け 情報館  
   

 

Azure

SQL Database

masterデータベースに接続できない

SSMSで接続時に、"master" データベースにアクセスできないという趣旨のエラーメッセージが出た場合。
SSMSログイン画面のオプションボタンを押し、接続先データベースを「規定」ではなく、具体的なDB名を指定して接続する。

https://learn.microsoft.com/ja-jp/azure/azure-sql/database/troubleshoot-common-errors-issues?view=azuresql

Web Apps

実行時例外(HTTP ERROR 500)のログ確認方法

Azureポータル > 外套のWebApps > 左のメニューから App Service Editor をクリック。
AppServiceEditorが起動する。
その画面の左側に「ドアから→矢印」マークのアイコン(Show Output)をクリック。

Output画面が出るので、その状態でウェブアプリを実行しエラーが起こると、Output画面にログの内容が書きだされている。

WebAppsからSQLDatabaseに接続できない

ローカルのSQLServerにはつながるのに、AzureのSQLDatabaseにつながらないという場合は、下記のポイントを確認する。

データベースへの接続IDとパスワードの確認

SQL Server Management Studioで、AzureのSQLDatabseに接続する。
そのときのIDとパスワードは、ウェブアプリで使うIDとパスワード。(管理者権限のアカウントではない)
ただしmasterデータベースにアクセスできないため、「オプション」ボタンを押して接続先DB名も指定すること。

接続後、テーブルに記録されたデータ内容を参照できていればOK。
参照できていなければ、 ウェブアプリからもデータにアクセスできないはずである。

ローカルのウェブアプリでの確認

ローカル開発中のウェブアプリで、appsettings.jsonに記載の接続文字列を、AzureのSQLDatabaseの接続文字列にして動かしてみる。
デバッグ実行し、DbContextクラスの派生クラスのConnectionStringsプロパティを見て、AzureのSQLDatabaseの接続文字列になっているか、そのうえでDBからデータを取り出せているかを確認する。

問題なくデータを読み出せていれば、接続文字列の指定に誤りはないということになる。

Azure SQLDatabaseのセキュリティ設定

Azureポータル > 該当のSQLDatabase > セキュリティ/ネットワーク にアクセス。
ファイアウォール規則の下にある「例外」の項目で、ウェブサーバーのIPアドレスを追加し、「Azureサービスおよびリソースにこのサーバーへのアクセスを許可する」にチェックを入れる。

その後、保存ボタンを押して確定すること。
SQLDatabaseの画面をリロードし、 追加した項目が存在し続けていることを確認する。

発行時の接続文字列の変更

ウェブアプリの「発行」機能により、AzureのWebAppsに発行するときに、接続文字列を切り替えることができる。
appsettings.production.json に、本番環境用の接続文字列を差し込み、WebAppsで動作させることができる。

なお、発行時にappseettings.jsonの種類を切り替えられるのは、WebAppsがBasicやStandardプランの場合である。

FreeやSharedの場合は、この方法を採用することができないため、次の項を参照。

FreeやSharedプランでの接続文字列の変更

App Service Editorで、appsettings.jsonの接続文字列を編集すればよい。
appsettings.production.json の接続文字列をコピーして、appsettings.jsonに反映する。

ただしappsettings.jsonの接続文字列を書き換えても、再度発行すると、開発時のappsettings.jsonで上書きされてしまう。
発行の都度、この接続文字列の書き換えが必要となる点に注意。