セールス: 1-800-867-1380

Azure SQL データベースのリソース制限

更新日: 2014年6月

Azure SQL データベース は、あらかじめ設定されたリソースの制限内でデータベースを維持するように、共有リソース (トランザクション ログ、I/O など) の使用状況を監視します。このリソース境界またはしきい値はリソース制限と呼ばれ、クライアントによるリソース使用量がテナントまたは物理ノードのレベルでこれらの制限を超過すると、Azure SQL データベース がリソースの使用量を管理し、接続が解除されたり要求が拒否されたりするようになります。

次の表は、各リソースの制限の概要を示しています。これを超えると、Azure SQL データベース によって要求が拒否されたり、影響を受けているリソースへの接続が終了されたりして、エラー コードが返されます。

Important重要
リソースの複数の制限条件に対して同じエラー コードが返されることもあります。これらの条件は、エラー メッセージでは状態として識別されます。たとえば、次の各エラー メッセージは、トランザクション ログの長さリソースに対して表示されます。それぞれのエラー コードとメッセージは同じですが、異なる制限条件に基づいて、State の値が異なっています。

Msg 40552, Level 17, State 1, Line 1
The session has been terminated because of excessive transaction log space usage.
Try modifying fewer rows in a single transaction.

-----------------------------------------------------------

Msg 40552, Level 17, State 2, Line 1
The session has been terminated because of excessive transaction log space usage.
Try modifying fewer rows in a single transaction.

次の表とその後の説明では、制限と、このようなエラー コードの各状態についての説明を示しています。このトピックの後の方の該当する説明に移動するには、表内のリソースの名前をクリックします。

 

リソース 上限 返されるエラー コード

データベース サイズ

データベース クォータ (MAXSIZE) に応じて

40544

トランザクション期間

State 1: 24 時間

State 2: 基になるシステム タスクで必要なリソースをトランザクションがロックする場合は 20 秒

40549

トランザクション ロック数

100 万ロック (トランザクションあたり)

40550

Tempdb

State 1: 5 GB の tempdb 領域

State 2: tempdb のトランザクションごとに 2 GB

State 3: tempdb の全ログ領域の 20%

40551

トランザクション ログの長さ

State 1: 2 GB (トランザクションあたり)

State 2: 全ログ領域の 20%

40552

メモリ使用量

20 秒より長い、16 MB のメモリ許可

40553

 

要求の拒否/接続の喪失のメカニズム 返されるエラー コード 上限 拒否される要求の種類 推奨事項

ユーザー データベースに割り当てられたデータベース領域がいっぱいになると、ユーザーはデータベース領域不足エラーを受け取ります。

40544: データベースのサイズ クォータに達しました。データを分割または削除するか、インデックスを削除するか、ドキュメントで解決策を調べてください。

データベース クォータ (MAXSIZE) に応じて

非 Select DML (Insert、Update、挿入または更新を行う Merge)。

DELETE/DROP ステートメントを使用してデータベースからデータを削除し、データベースのサイズが制限より小さくなるようにします。

トップに戻る

 

要求の拒否/接続の喪失のメカニズム 返されるエラー コード 上限 拒否される要求の種類 推奨事項

トランザクションが依存する行、ページ、テーブルなどのリソースに対して、トランザクション要求がロックされます。ロックされたリソースに対する依存がなくなると、ロックは解除されます。要求は、次の 2 つの条件のいずれかの場合に拒否されます。

  • State 1: トランザクションが 24 時間より長い時間実行されている場合は、終了します。

  • State 2: 基になるシステム タスクで必要なリソースをトランザクションが 20 秒以上ロックする場合は、終了します。

40549: トランザクションが長時間実行されているため、セッションを終了しました。トランザクションを短くしてください。

State 1: 24 時間

State 2: 基になるシステム タスクで必要なリソースをトランザクションがロックする場合は 20 秒

24 時間より長く実行されているトランザクションか、ロックを必要とし、システム タスクをブロックすることになる DDL または DML ステートメント。

SQL データベースに対する操作は、ユーザー入力をブロックしたり、トランザクションの実行時間を長くするような他の依存関係を持ったりするべきではありません。

トップに戻る

 

要求の拒否/接続の喪失のメカニズム 返されるエラー コード 上限 拒否される要求の種類 推奨事項

100 万を超えるロックを設定しているセッションが終了されます。

40550: 取得したロックの数が多すぎるため、セッションを終了しました。1 つのトランザクション内で読み取るまたは変更する行数を少なくしてください。

100 万ロック (トランザクションあたり)

DDL または DML ステートメント。

以下の DMV をトランザクションの監視に使うことができます。

  • sys.dm_tran_active_transactions

  • sys.dm_tran_database_transactions

  • sys.dm_tran_locks

  • sys.dm_tran_session_transactions

アプリケーションの種類によっては、PAGLOCK や TABLOCK のような粒度の粗いロック ヒントを使用して、特定のステートメントまたはトランザクションで取得されるロックの数を削減できる場合があります。これがアプリケーションの同時実行性に悪影響を与える場合があることに注意してください。

トップに戻る

 

要求の拒否/接続の喪失のメカニズム 返されるエラー コード 上限 拒否される要求の種類 推奨事項

tempdb に対する要求は、次の 3 つの条件のいずれかの場合に拒否されます。

  • State 1: セッションが 5 GB を超える tempdb 領域を使用すると、セッションが終了されます。

  • State 2: 2 GB を超えるサイズのログを持つ tempdb 内のトランザクションは、切り詰められます。tempdb のログ領域を消費する場合がある操作の例:挿入、更新、削除、マージ、インデックス作成。

  • State 3: tempdb のコミットされていないトランザクションが、ログ ファイルの切り詰めをブロックすることがあります。これを回避するには、tempdb の最も古いアクティブなトランザクション ログ シーケンス番号 (LSN) からログの末尾 (現在の LSN) までの距離が、ログ ファイルのサイズの 20% を超えないようにします。超えた場合は、tempdb 内の問題のトランザクションが終了され、ログを切り詰めることができるようにロールバックされます。

40551: 過度な tempdb 使用のため、セッションは終了されました。一時テーブルの領域使用量を減らすために、クエリを変更してください。

State 1: 5 GB の tempdb 領域

State 2: tempdb のトランザクションごとに 2 GB

State 3: tempdb の全ログ領域の 20%

tempdb に対する DDL または DML ステートメント。

クエリを変更して一時テーブル領域の使用を減らし、必要でなくなった一時オブジェクトを削除し、テーブルを切り詰めるか、使用していないテーブルを削除します。

行数を減らすか、操作を複数のトランザクションに分割して、tempdb 内のトランザクションのデータのサイズを減らします。

トップに戻る

 

要求の拒否/接続の喪失のメカニズム 返されるエラー コード 上限 拒否される要求の種類 推奨事項

要求は、次の 2 つの条件のいずれかの場合に拒否されます。

  • State 1: SQL データベースは、最大で 2 GB のログを生成するトランザクションをサポートします。この制限を超えるログを持つトランザクションは、切り詰められます。このボリュームのログ領域を消費する場合がある操作の例:挿入、更新、削除、マージ、インデックス作成。

  • State 2: コミットされていないトランザクションが、ログ ファイルの切り詰めをブロックすることがあります。これを回避するには、最も古いアクティブなトランザクション ログ シーケンス番号 (LSN) からログの末尾 (現在の LSN) までの距離が、ログ ファイルのサイズの 20% を超えないようにします。超えた場合は、問題のトランザクションが終了され、ログを切り詰めることができるようにロールバックされます。

40552: トランザクション ログの使用領域が多すぎるため、セッションを終了しました。1 つのトランザクション内で変更する行数を少なくしてください。

State 1: 2 GB (トランザクションあたり)

State 2: 全ログ領域の 20%

DDL または DML ステートメント。

行操作では、たとえば行数を減らすか、操作を複数のトランザクションに分割して、トランザクションのデータのサイズを減らします。

1 つのトランザクションを必要とするテーブル操作またはインデックス操作では、次の式に従うようにしてください: テーブル内で影響を受ける行の数 * (更新されるフィールドの平均サイズのバイト数 + 80) < 2 GB (インデックスの再構築の場合は、更新されるフィールドの平均サイズを平均インデックス サイズに置き換える必要があります)。

トップに戻る

 

要求の拒否/接続の喪失のメカニズム 返されるエラー コード 上限 拒否される要求の種類 推奨事項

20 秒以上メモリ許可を待機しているセッションが複数ある場合は、16 MB を超えるメモリ許可を 20 秒を超えて消費しているセッションが、リソースを確保した時間の降順で終了されます。これは、古いセッションを先に終了させるためです。必要なメモリが使用可能になるとすぐに、セッションの終了が停止されます。

40553: メモリの使用量が多すぎるため、セッションを終了しました。処理する行数が少なくなるように、クエリを修正してみてください。

20 秒より長い、16 MB を超えるメモリ許可。

並べ替えとハッシュ結合を使用するクエリを含み、メモリ許可を消費するクエリ。

並べ替えやハッシュ結合を必要とするクエリに対して、クエリ チューニングを行います。

トップに戻る

関連項目

この情報は役に立ちましたか。
(残り 1500 文字)
フィードバックをいただき、ありがとうございました
表示:
© 2014 Microsoft