メイン コンテンツへスキップ
サポート
Microsoft アカウントでサインイン
サインインまたはアカウントを作成してください。
こんにちは、
別のアカウントを選択してください。
複数のアカウントがあります
サインインに使用するアカウントを選択してください。

Microsoft では、Microsoft SQL Server 2005、2008、2008 R2 の修正プログラムを 1 つのダウンロード可能なファイルとして配布しています。 修正プログラムは累積的であるため、各新しいリリースには、以前のSQL Server 2005、2008、2008 R2 の修正リリースに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。

現象

次のような状況で問題が発生します。

  • Microsoft SQL Server 2005、Microsoft SQL Server 2008、または Microsoft SQL Server 2008 R2 をコンピューターにインストールします。

  • 1 つ以上のデータベースが完全復旧モデルまたは一括ログ復旧モデルに含まれています。

  • データベースのトランザクション ログ ファイルの初期サイズは小さくなります。 ただし、トランザクション ファイルは大きくなります。

  • トランザクション ログ ファイルの自動拡張増加増分は、小さいサイズに構成されます。 たとえば、自動拡張増加増分は 1 メガバイトまたは 1% に構成されます。 または、手動での小規模な拡張を使用して、トランザクション ログ ファイルを増やします。

  • トランザクション ログ ファイルは、増加が小さいほど増加します。 しばらくすると、トランザクション ログ ファイルが大きくなります。

    たとえば、トランザクション ログ ファイルは 100 メガバイトから 10 ギガバイトに増加します。 トランザクション ログ ファイルは、増加するたびに 1 メガバイトずつ増加します。

このシナリオでは、次の問題が発生する可能性があります。

  • 回復する作業量が多い場合、データベースの起動時にデータベースの復旧が遅くなります。

    たとえば、トランザクションが長時間開いている保留中です。 または、サイズが小さいトランザクションの多くは、SQL Serverがシャットダウンまたは再起動されたときにコミットされません。 この場合、分析フェーズ、元に戻すフェーズ、またはやり直しフェーズで、長い推定復旧時間のエラーが発生することがあります。 このエラーは次のようになります。SQL Server 2005 エラー ログ ファイルに記録されます。

    データベース 'mydatabase' (7) の分析は 0% 完了です (残り約 1234 秒)。 これは情報メッセージのみです。 ユーザー アクションは必要ありません。

  • データベースがオンラインになった場合、データベースの完全バックアップ ファイルと追加のトランザクション ログ シーケンスが復元されると、データベースの回復が遅くなります。

    注: 復元操作中にデータベースをオンラインにするには、WITH RECOVERY 構文または WITH STANDBY = <オプション>構文を 使用します。

  • ミラーリング ペアのパートナー サーバーでは、データベース ミラーリングの回復に時間がかかります。

  • トランザクション レプリケーションのログ リーダー エージェントの進行状況は、次の操作では低速です。

    • パブリッシャー データベースのトランザクション ログが解析されます。

    • ディストリビューション データベースにコマンドが追加されます。

    • トランザクションがレプリケートされます。

  • パフォーマンスが低下するのは、多数のトランザクションがログに記録された場合、またはトランザクション ログが長時間アクティブなままの場合に、データベース スナップショットが作成されたときに発生します。 この問題は、スナップショットで復旧を実行する必要があり、トランザクション ログをロールバックする必要があるために発生します。

  • パフォーマンスの低下は、DBCC CHECKDB 構文を使用して、整合性チェックを実行するためにデータベース スナップショットを完全に復旧する必要がある非表示のデータベース スナップショットを作成するときに発生します。

原因

これらの問題は、トランザクション ログ ファイル内の仮想ログ ファイル (VLF) が、次の操作中にこれらの VLF をスキャンSQL Server場合にパフォーマンスが低下する可能性があるために発生します。

  • データベースの復旧

  • データベース ミラーリング

  • データベース スナップショット

  • データベース トランザクション レプリケーション ログ リーダー アクティビティ

データベースのトランザクション ログ ファイルが極端な増加条件の間に小さな増分で増加すると、1 つのトランザクション ログ (.ldf) ファイルのセット内に数千から数十万の VLF が存在します。 ただし、大きな増分による大きなログ増加により、比較によって作成される VLF は数個のみです。 たとえば、複数の VLF が 100 未満である可能性があります。

VLF は、トランザクション ログ ファイル内のSQL Serverによって内部的に使用される分割またはセグメントです。
 

解決方法

累積的な更新プログラムの情報

SQL Server 2008 R2


この問題の修正プログラムは、累積的な更新プログラム 6 で最初にリリースされました。 SQL Server 2008 R2 のこの累積的な更新プログラム パッケージを取得する方法の詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。

2489376 SQL Server 2008 R2 用の累積的な更新プログラム パッケージ 6 注: ビルドは累積的であるため、新しい修正プログラムリリースごとに、以前のSQL Server 2008 R2 修正リリースに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。 この修正プログラムを含む最新の修正プログラム リリースの適用を検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。

981356 SQL Server 2008 R2 がリリースされた後にリリースされた SQL Server 2008 R2 ビルド

SQL Server 2008 Service Pack 1

この問題の修正プログラムは、SQL Server 2008 Service Pack 1 の累積的な更新プログラム 12 で最初にリリースされました。

ビルドは累積的であるため、各新しい修正プログラム リリースには、以前のSQL Server 2008 修正リリースに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。 Microsoft では、この修正プログラムを含む最新の修正プログラム リリースの適用を検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。

970365 SQL Server 2008 Service Pack 1 がリリースされた後にリリースされた 2008 SQL Server 2008 ビルドは、Microsoft SQL Server 2008 修正プログラムが特定のSQL Server サービス パックに対して作成されます。 SQL Server 2008 Service Pack 1 の修正プログラムを、SQL Server 2008 Service Pack 1 のインストールに適用する必要があります。 既定では、SQL Server サービス パックで提供されるすべての修正プログラムは、次のSQL Serverサービス パックに含まれます。

SQL Server 2008 Service Pack 2


この問題の修正プログラムは、SQL Server 2008 Service Pack 2 の累積的な更新プログラム 2 で最初にリリースされました。

ビルドは累積的であるため、各新しい修正プログラム リリースには、以前のSQL Server 2008 修正リリースに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。 Microsoft では、この修正プログラムを含む最新の修正プログラム リリースの適用を検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。

2402659 SQL Server 2008 Service Pack 2 がリリースされた後にリリースされた 2008 SQL Server 2008 ビルドは、Microsoft SQL Server 2008 修正プログラムが特定のSQL Server サービス パックに対して作成されます。 SQL Server 2008 Service Pack 2 のインストールに、SQL Server 2008 Service Pack 2 修正プログラムを適用する必要があります。 既定では、SQL Server サービス パックで提供されるすべての修正プログラムは、次のSQL Serverサービス パックに含まれます。

SQL Server 2005 Service Pack 3

この問題の修正プログラムは、SQL Server 2005 Service Pack 3 の累積的な更新プログラム 13 で最初にリリースされました。

注: ビルドは累積的であるため、各新しい修正プログラム リリースには、以前のSQL Server 2005 修正リリースに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。 Microsoft では、この修正プログラムを含む最新の修正プログラム リリースの適用を検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。

960598 SQL Server 2005 Service Pack 3 がリリースされた後にリリースされた 2005 SQL Server 2005 ビルドは、Microsoft SQL Server 2005 修正プログラムは、特定のSQL Server Service Pack に対して作成されます。 SQL Server 2005 Service Pack 3 のインストールに、SQL Server 2005 Service Pack 3 修正プログラムを適用する必要があります。 既定では、SQL Server サービス パックで提供されるすべての修正プログラムは、次のSQL Serverサービス パックに含まれます。
 

SQL Server 2005 Service Pack 4

この問題の修正プログラムは、SQL Server 2005 Service Pack 4 の累積的な更新プログラム 1 で最初にリリースされました。

注: ビルドは累積的であるため、各新しい修正プログラム リリースには、以前のSQL Server 2005 修正リリースに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。 Microsoft では、この修正プログラムを含む最新の修正プログラム リリースの適用を検討することをお勧めします。

SQL Server 2005 Service Pack 4 のインストールに、SQL Server 2005 Service Pack 4 修正プログラムを適用する必要があります。 既定では、SQL Server サービス パックで提供されるすべての修正プログラムは、次のSQL Serverサービス パックに含まれます。

状態

マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。

回避策 

この修正プログラムをインストールし、SQL Server再起動すると、回復パフォーマンスが向上する可能性があります。 たとえば、この修正プログラムをインストールしてSQL Serverを再起動すると、次の操作のパフォーマンスが向上する可能性があります。

  • データベースの復旧

  • データベース ミラーリング

  • データベース スナップショット

  • データベース トランザクション レプリケーション ログ リーダー アクティビティ


この修正プログラムをインストールできない場合は、次の回避策を実行して既存の問題を軽減し、今後発生しないようにすることができます。

既存の問題を軽減する

  • 復元操作または復旧操作が完了

    するまで待ちます データベースを復元または復旧するときにパフォーマンスが低下している回復されていないデータベースがある場合は、復元操作または復旧操作が完了するまで待つ必要がある場合があります。 たとえば、非復旧データベースのオフライン状態または復旧状態が SQL Server Management Studio (SSMS) に表示される場合があります。 通常、SQL Serverを停止すると、回復速度が低下するため、復旧に時間がかかり、同じ復旧分析フェーズ、再実行フェーズ、または元に戻すフェーズを繰り返すのに時間がかかる場合があります。

  • 数千の VLF

    を含むトランザクション ログ シーケンスを復元しないでください バックアップ ファイルを使用してデータベースを復元および復旧するときにパフォーマンスが低下する場合は、数千の VLF を含むトランザクション ログ シーケンスの復元を回避できます。 最も多くの仮想ログ ファイルが記録されているバックアップ ファイルを特定するには、次のステートメントを使用して、ログ バックアップ ファイル
    FirstLSN 列と LastLSN 列を確認します。 RESTORE HEADERONLY FROM DISK='C:\folder\file.trn'

    ログ バックアップ ファイルの復元は避けることができます。 または、RESTORE コマンドで STOP AT ステートメントを使用して、トランザクション ログの高度に断片化された部分を回避することもできます。 障害復旧シナリオ中にログ シーケンスを最新の時点まで完全に復元しないと、データベース SQL Serverでデータ損失が発生します。 このデータ損失は、すべてのトランザクションが保持されているわけではないため発生します。 そのため、ビジネス上のトレードオフの決定があります。 高度に断片化されたトランザクション ログを完全に復元できます。 ただし、この操作には多くの時間がかかる場合があります。 または、復旧で STOP AT ステートメントを使用して、ログの高度に断片化された部分の前に復旧を停止することもできます。 ただし、省略した不足しているトランザクションはすべて失われます。

    注: この修正プログラムをインストールしないと、通常は、SQL Serverを再起動した後の迅速な復旧に安全な手段はありません。 SQL Serverは、ログ ファイルを分析し、完了したトランザクションをやり直し、不完全なトランザクションを元に戻してデータベースを安全にオンラインにするために、VLF の一覧を見つける必要があります。 復旧中にトランザクションを安全にスキップすることはできません。

今後発生しないようにする

  • データベースの自動拡張増分を適切なサイズ

    に設定する 自動拡張増分のサイズが小さすぎる場合は、多くの仮想ログ ファイル (VLF) が発生し、SQL Serverでパフォーマンスが低下する可能性があります。 自動拡張インクリメントのサイズが大きすぎる場合、トランザクション ログを自動的に拡張するクエリは、増加を完了するために長い時間待たなければならない場合があります。 そのため、SQL Serverでタイムアウト エラーが発生する可能性があります。 これらの問題を回避するには、データベースの自動拡張増分のサイズを適切なサイズに設定します。

  • 多数の VLF を排除し、手動での拡張

    を使用する 多くの VLF がトランザクション ログにある場合は、トランザクション ログのサイズを小さくし、手動での増加を使用して需要を満たすために、ピーク時のビジネスの前に増加させます。 たとえば、トランザクション ログは、大規模な増分または 1 回の手動増加で妥当な平均サイズに戻ります。 そのため、トランザクション ログのサイズはピーク容量に達し、ログ バックアップ ファイルは頻繁かつ定期的にスケジュールされます。 さらに、トランザクション ログが切り捨てられ、トランザクション ログの VLF を 1 つのサイクルで再利用できます。

  • トランザクション ログを手動

    で圧縮して増やす方法 VLF が多すぎるログを修正するには、次の手順に従ってログを圧縮し、手動で再度増やします。

    1. データベースが完全復旧モデルまたは一括ログ復旧モデルの場合は、アクティブな VLF を切り捨てて再利用できるように、トランザクション ログをバックアップする必要があります。BACKUP LOG databasename TO DISK='C:\folder\log_backupfile.trn'
      SSMS を使用してトランザクション ログ ファイルをバックアップする方法の詳細については、次の Microsoft Developer Network (MSDN) Web サイトを参照してください。

      SSMS を使用してトランザクション ログ ファイルをバックアップする方法Transact-SQL ステートメントを使用してトランザクション ログ ファイルをバックアップする方法の詳細については、次の MSDN Web サイトを参照してください。

      Transact-SQL ステートメントを使用してトランザクション ログ ファイルをバックアップする方法

    2. トランザクション ログ ファイルの論理名を確認するには、次のいずれかのステートメントを実行します。
      ステートメント 1
      exec sp_helpfile ステートメント 2
      select * from sys.sysfiles トランザクション ログ ファイルのサイズを目的のサイズに縮小するには、次のコードを使用します:DBCC SHRINKFILE(transactionloglogicalfilename, TRUNCATEONLY)

    3. トランザクション ログ ファイルのサイズを適切なサイズに増やすことができます。 トランザクション ログ ファイルのサイズをピーク時の通常のサイズに拡張することをお勧めします。 そのため、自動拡張インクリメントは回避されます。 トランザクション ログのサイズを設定するには、SSMS の [データベースのプロパティ] ページを使用するか、次の ALTER DATABASE 構文を使用します。MODIFY FILE ( NAME = transactionloglogicalfilenae, SIZE=newtotalsize MB)
      SSMS でデータベースのサイズを大きくする方法の詳細については、次の MSDN Web サイトを参照してください。

      SSMS でデータベースのサイズを増やす方法ALTER DATABASE MODIFY FILE 構文の詳細については、次の MSDN Web サイトを参照してください。

      ALTER DATABASE MODIFY FILE 構文に関する一般的な情報

詳細情報

SQL エラー ログ ファイルを確認し、各トランザクション ログ バックアップ ファイルでログ シーケンス番号 (LSN) を見つけることで、VLF セグメントの数を確認できます。 LSN のコロン 記号の前の最初の数字は、LSN の数に対応します。

たとえば、LSN の最初の情報メッセージの最初の番号は 1 です。 ただし、LSN の 2 番目の情報メッセージの最初の番号は100001。 このシナリオでは、最初の情報メッセージの時刻から 2 番目の情報メッセージまでの間に使用される 100,000 個の VLF があります。 そのため、多くの Virtual Log Files (VLF) を含むログに記録された断片化されたトランザクション ログは、次のようになります。
 

{ログがバックアップされました。 データベース: mydbname、 作成日(時刻): 2010/07/08(12:36:46)、最初の LSN: 1:5068:70、最後の LSN: 1:5108:1、ダンプ デバイスの数: 1、デバイス情報: (FILE=1、TYPE=DISK: {'C:\folder\logbackup1.trn'})。 これは情報メッセージのみです。 ユーザー アクションは必要ありません。

ログがバックアップされました。 データベース: mydbname、 作成日(時刻): 2010/07/08(15:36:46)、最初の LSN: 100001:5108:1、最後の LSN: 100002:5108:1、ダンプ デバイスの数: 1、デバイス情報: (FILE=2、TYPE=DISK: {'C:\folder\logbackup2.t'})。 これは情報メッセージのみです。 ユーザー アクションは必要ありません。}

次の表に、SQL Server のインスタンスとルールが評価される SQL Serverバージョンの [現象] セクションで説明されている条件を自動的に確認する製品またはツールの詳細を示します。
 

ルール ソフトウェア

ルール タイトル

ルールの説明

ルールが評価される対象である製品バージョン

System Center Advisor

トランザクション レプリケーションのSQL Server、トランザクション ログのサイズまたは VLF の数が原因でログ リーダー エージェントのパフォーマンスが影響を受ける可能性があります

このSQL Serverインスタンス アドバイザーでは、VLF または TLOG サイズの数が大幅に大きいプレゼンス トランザクション レプリケーションが検出されました。 ログ リーダー エージェントのパフォーマンスは、トランザクション ログのサイズまたは VLF の数によって悪影響を受けます。 トランザクション ログ サイズと VLF の数を減らして、ログ リーダー エージェントのパフォーマンスを向上させます。

SQL Server 2008

SQL Server 2008 R2

SQL Server 2012



 

関連情報

トランザクション ログの物理アーキテクチャの詳細については、次の MSDN Web サイトを参照してください。

トランザクション ログ

の物理アーキテクチャに関する一般的な情報 ログ シーケンス番号 (LSN) の詳細については、次の MSDN Web サイトを参照してください。

ログ シーケンス番号

に関する一般的な情報 データベース ミラーリングの開始時の 1413 エラーの詳細については、次の MSDN Web サイトを参照してください。

データベース ミラーリングの開始時

の 1413 エラーに関する一般的な情報 ログ ファイル構造がデータベースの復旧時間に与える影響の詳細については、次の MSDN Web サイトを参照してください。

ログ ファイル構造がデータベースの復旧時間

に与える影響 トランザクション ログの VLF の詳細については、次の MSDN Web サイトを参照してください。

トランザクション ログ ファイル

に関する一般的な情報 データベース スナップショットを作成する方法の詳細については、次の MSDN Web サイトを参照してください。

データベース スナップショットを作成する方法SQL Serverの増分サービス モデルの詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。

935897 増分サービス モデルは、報告された問題の修正プログラムを提供するために、SQL Server チームから入手できますSQL Server更新プログラムの名前付けスキーマの詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を表示してください。

822499Microsoft SQL Server ソフトウェア更新プログラム パッケージの新しい名前付けスキーマソフトウェア更新プログラムの用語の詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。

824684 マイクロソフトのソフトウェアの更新で使用される一般的な用語の説明

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。

この情報は役に立ちましたか?

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?
[送信] を押すと、Microsoft の製品とサービスの改善にフィードバックが使用されます。 IT 管理者はこのデータを収集できます。 プライバシーに関する声明。

フィードバックをいただき、ありがとうございます。

×