認証と認可に関するエラーの特定
接続エラーは、再構成、ファイアウォール設定、接続タイムアウト、または不正なログイン情報によって発生する可能性があります。 さらに、一部の Azure SQL Database または SQL Managed Instance リソースが容量を超えている場合は、接続できません。
一時的な障害
SQL Database サービスで負荷の高いワークロードが増加すると、Azure インフラストラクチャではサーバーを動的に再構成できますが、この操作中にクライアント アプリケーションがデータベースへの接続を失う可能性があります。
一時的な障害は、計画イベントまたは計画外イベントのデータベース再構成中に発生します。 これらのイベントは短く、完了するまでに 60 秒以上かかることはありません。
Azure SQL Database に接続するときにアプリケーションが受け取る可能性がある一時的なエラーの一覧を次に示します。
- ログインによって要求されたデータベース "%.*ls" を開けませんでした。 ログインに失敗しました。
- 要求を処理できません。 要求を処理するリソースが十分ではありません。
- 要求を処理できません。 サブスクリプション "%ld" に対して進行中の操作が多すぎます。
注意
一時的な障害の完全なリストについては、「Azure SQL Database および Azure SQL Managed Instance の接続に関する問題とその他のエラーのトラブルシューティング」を参照してください。
一時的な接続エラーを監視する方法
| エラー | アクション |
|---|---|
| ログイン エラー | アプリケーションが Microsoft Azure サービス ダッシュボードでエラーを報告した期間中に停止が発生していないか確認します。 |
| データベースがリソースの制限に達する | データベースのコンピューティング リソースとストレージ リソースを注意深く監視し、リソース制限に達したときに対処して、一時的な障害が起こらないようにします。 |
| 拡張認証エラー | アプリケーションで 60 秒を超える接続エラーが発生した場合、または特定の日に複数回発生した場合は、Azure portal を介して Azure サポート要求を提出します。 |
再試行ロジック
アプリケーション開発者は、Azure SQL Database などのクラウド サービスとの統合時に、一時的なエラーが断続的に発生することを予測し、ユーザーにアプリケーション エラーを表示するのではなく、再試行ロジックを実装する必要があります。 プログラムが終了する前に、再試行の最大数を設定することが重要です。
最初の再試行では、少なくとも 5 秒間は待機することをお勧めします。 再試行するたびに、待機時間を指数関数的に増やし、最大 60 秒まで長くします。
注意
SELECT ステートメントが SQL Database または SQL Managed Instance で一時的なエラーで失敗した場合は、直接再試行しないでください。 代わりに、新しい接続を使用して SELECT ステートメントを再試行してください。
サーバーにログインできない
エラー「ユーザー "<ユーザー名>" のログインに失敗しました」が発生した場合、サービス管理者は次の手順に従うことができます。
-
sys.sql_loginsカタログ ビューを使用してログインが無効になっていないかを確認します。 - ログインが無効になっている場合は、
ALTER LOGIN <User name> ENABLE;を実行して有効にします。 - ログインが存在しない場合は、
CREATE LOGINステートメントを使用して作成します。 - ユーザーにアクセス権を付与するデータベースに接続し、
CREATE USERステートメントを実行します。 -
ALTER ROLEコマンドを使用してユーザーにロールを割り当てるか、GRANTコマンドを使用して 1 つ以上のデータベース オブジェクトへのアクセス権をユーザーに付与します。
接続文字列
接続エラーが発生した場合は、接続文字列が正しく動作していることを確認することをお勧めします。 新しいデータベースをプロビジョニングしたとき、またはデータベース サービスにインフラストラクチャを変更した後に、この確認は重要です。
Azure portal では、Azure SQL Database と対話するために必要な接続文字列を取得できます。
Azure portal で [すべてのサービス] を選択し、[SQL データベース] を選択します。 フィルターをかけて、目的のデータベースを選択します。
データベースのウィンドウで、[接続文字列] を選びます。
接続文字列をコピーし、必要に応じてパスワードを入力したり、サーバー名を置き換えたりして編集します。
クライアント アプリケーションで更新された接続文字列を参照します。
Azure SQL Database と Azure SQL Managed Instance の接続エラーの詳細については、「Azure SQL Database および Azure SQL Managed Instance の接続に関する問題とその他のエラーのトラブルシューティング」を参照してください。