FIX パフォーマンスの低下と、SQL Server 2005、SQL Server 2008 または SQL Server 2008 R2 では、トランザクション ログ内に多くの Vlf がある場合は、データベースを回復します。

文書翻訳 文書翻訳
文書番号: 2455009 - 対象製品
マイクロソフトは Microsoft SQL Server 2005年配布して、1 つのダウンロード可能なファイルとして 2008年および 2008 R2 を修正します。修正プログラムは累積的であるため各新しいリリースすべての修正プログラムを含むし、以前 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 秒のままです)。これは情報メッセージのみです。ユーザーの操作は必要ありません。
  • データベースがオンラインになった場合は、完全データベース バックアップ ファイルや、追加のトランザクション ログ シーケンスが復元されたときに、データベースの回復が遅くなります。

    注: 使用して、復元操作中に、データベースをオンラインにします リカバリを含む 構文、または スタンバイを = します。 <options></options> 構文があります。
  • データベース復旧のミラーリングは、パートナー サーバーで、ミラーリングのペアに低速です。
  • トランザクション レプリケーションのログ リーダー エージェントの進行状況は、次の操作は低速です。
    • パブリッシャー データベースのトランザクション ログが解析されます。
    • コマンドがディストリビューション データベースに追加されます。
    • トランザクションがレプリケートされます。

    注: 詳細については、次の Microsoft Developer Network (MSDN) web サイトを参照してください。
    949523 [初期サイズ] プロパティの値と、自動拡張プロパティの値が小さいとき、トランザクション レプリケーションの待機時間が SQL Server 2005 で高
  • 多くのトランザクションが記録されている場合または場合は、トランザクション ログは長時間アクティブなまま、データベース スナップショットを作成すると、パフォーマンスが低下が発生します。この問題は、スナップショットがリカバリを実行するにして、トランザクション ログをロールバックするために発生します。
  • 使用すると、パフォーマンスが低下が発生します DBCC CHECKDB 整合性を実行するデータベース ・ スナップショットを完全に回復するのにされている非表示のデータベース スナップショットを作成する構文をチェックします。

原因

これらの問題は、トランザクション ・ ログ ・ ファイルには、仮想ログ ファイル (Vlf)、次の操作時に SQL Server がこれらの Vlf をスキャンするときにパフォーマンスが低下が発生する可能性がありますので発生します。
  • データベースの回復
  • データベース ・ ミラーリング
  • データベース スナップショット
  • データベースのトランザクション レプリケーション ログ リーダーの処理
極端な成長の条件の中に、データベースのトランザクション ログ ファイルを少しずつ増加すると千何百もの何千もの Vlf には一連のトランザクション ログ (.ldf) ファイル内に存在です。ただし、サイズの大きいログの成長を大きくのみいくつかの Vlf に対し作成します。たとえば、いくつかの 100 の Vlf があります。

メモ Vlf は、部門や、トランザクション ログ ファイルに SQL Server によって内部的に使用されるセグメントです。

解決方法

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

SQL Server 2008 R2

この問題に対する修正は、累積的な更新 6 で初めてリリースされました。SQL Server 2008 R2 のこの累積的な更新プログラム パッケージの入手方法の詳細については、マイクロソフト サポート技術資料を参照する次の文書番号をクリックしてください。
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 の最初リリースされました。この累積的な更新プログラム パッケージの詳細については、次のマイクロソフト サポート技術資料を参照する次の文書番号をクリックしてください。
2467236 SQL Server 2008 の Service Pack 1 用の累積的な更新パッケージ 12
注: ビルドは累積的であるため各新しい修正プログラム リリースにはすべての修正プログラムが含まれているし、以前の SQL Server 2008 に含まれているすべてのセキュリティ修正プログラム リリースを修正します。この修正プログラムが含まれる最新の修正プログラム リリースを適用を検討することをお勧めします。詳細については、以下の資料番号をクリックして、マイクロソフト サポート技術情報資料を参照してください。
970365 SQL Server 2008 Service Pack 1 のリリース後にリリースされた SQL Server 2008 のビルド
特定の SQL Server の Service Pack の Microsoft SQL Server 2008年の修正プログラムが作成されます。SQL Server 2008 のサービス パック 1 の修正プログラムを適用すると、SQL Server 2008 の Service Pack 1 のインストールをする必要があります。既定では、SQL Server の Service Pack で提供されるすべての修正プログラム SQL Server の次の service pack に含まれているです。

SQL Server 2008 Service Pack 2

この問題に対する修正は SQL Server 2008 の Service Pack 2 の累積的な更新 2 で最初リリースされました。この累積的な更新プログラム パッケージの詳細については、次のマイクロソフト サポート技術資料を参照する次の文書番号をクリックしてください。
2467239 SQL Server 2008 の Service Pack 2 の累積的な更新プログラム パッケージ 2
注: ビルドは累積的であるため各新しい修正プログラム リリースにはすべての修正プログラムが含まれているし、以前の SQL Server 2008 に含まれているすべてのセキュリティ修正プログラム リリースを修正します。この修正プログラムが含まれる最新の修正プログラム リリースを適用を検討することをお勧めします。詳細については、以下の資料番号をクリックして、マイクロソフト サポート技術情報資料を参照してください。
2402659 SQL Server 2008 Service Pack 2 がリリースされた後にリリースされた SQL Server 2008 のビルド
特定の SQL Server の Service Pack の Microsoft SQL Server 2008年の修正プログラムが作成されます。SQL Server 2008 のサービス パック 2 の修正プログラムを適用すると、SQL Server 2008 の Service Pack 2 のインストールをする必要があります。既定では、SQL Server の Service Pack で提供されるすべての修正プログラム SQL Server の次の service pack に含まれているです。

SQL Server 2005 Service Pack 3

この問題に対する修正は SQL Server 2005 のサービス パック 3 の累積的な更新プログラム 13 にまずリリースされました。この累積的な更新プログラム パッケージの詳細については、次のマイクロソフト サポート技術資料を参照する次の文書番号をクリックしてください。
2438344 SQL Server 2005 のサービス パック 3 の累積的な更新プログラム パッケージ 13
注: ビルドは累積的であるため各新しい修正プログラム リリースにはすべての修正プログラムが含まれているし、以前の SQL Server 2005 に付属していたすべてのセキュリティ修正プログラム リリースを修正します。この修正プログラムが含まれる最新の修正プログラム リリースを適用を検討することをお勧めします。詳細については、以下の資料番号をクリックして、マイクロソフト サポート技術情報資料を参照してください。
960598 SQL Server 2005 Service Pack 3 のリリース後にリリースされた、SQL Server 2005 のビルド
特定の SQL Server サービス パックの場合は、Microsoft SQL Server 2005年の修正プログラムが作成されます。SQL Server 2005 のサービス パック 3 の修正プログラムを適用すると、SQL Server 2005 のサービス パック 3 のインストールをする必要があります。既定では、SQL Server の Service Pack で提供されるすべての修正プログラム SQL Server の次の service pack に含まれているです。

SQL Server 2005 Service Pack 4

この問題に対する修正は SQL Server 2005 のサービス パック 4 の累積的な更新 1 で初めてリリースされました。この累積的な更新プログラム パッケージの詳細については、次のマイクロソフト サポート技術資料を参照する次の文書番号をクリックしてください。
2464079 SQL Server 2005 のサービス パック 4 の累積的な更新プログラム パッケージ 1
注: ビルドは累積的であるため各新しい修正プログラム リリースにはすべての修正プログラムが含まれているし、以前の SQL Server 2005 に付属していたすべてのセキュリティ修正プログラム リリースを修正します。この修正プログラムが含まれる最新の修正プログラム リリースを適用を検討することをお勧めします。詳細については、以下の資料番号をクリックして、マイクロソフト サポート技術情報資料を参照してください。
2485757 SQL Server 2005 のサービス パック 4 がリリースされた後にリリースされた、SQL Server 2005 のビルドします。
特定の SQL Server サービス パックの場合は、Microsoft SQL Server 2005年の修正プログラムが作成されます。SQL Server 2005 の Service Pack 4 修正プログラムを適用すると、SQL Server 2005 のサービス パック 4 のインストールをする必要があります。既定では、SQL Server の Service Pack で提供されるすべての修正プログラム SQL Server の次の service pack に含まれているです。

状況

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

回避策

この修正プログラムをインストールし、SQL Server を再起動、リカバリのパフォーマンスを向上させる可能性があります。たとえば、この修正プログラムをインストールして SQL Server を再起動した後にパフォーマンス、次の操作を向上可能性があります。
  • データベースの回復
  • データベース ・ ミラーリング
  • データベース スナップショット
  • データベースのトランザクション レプリケーション ログ リーダーの処理

この修正プログラムをインストールできない場合は、既存の問題を緩和して、将来の発生を防ぐために次の回避策を実行できます。

既存の問題を緩和します。

  • 復元操作または回復操作が完了するまで待つ

    復旧されていないデータベースを復元するときにパフォーマンスが低下が発生しているか、データベースの回復がある場合はの復元または回復操作を完了するまで待機する必要があります。たとえば、オフライン状態またはに復旧されていないデータベースの状態を回復する SQL Server Management Studio (SSMS) を参照して可能性があります。通常の SQL Server を停止するリリーフは、低速のリカバリを提供しないと繰り返し、同じ復旧分析フェーズ、再実行フェーズでは、または元に戻すフェーズに時間がかかることがあります。
  • 何千も Vlf にはが含まれているトランザクションのログ シーケンスの復元を避ける

    復元し、バックアップ ファイルを使用して、データベースの復旧中に、パフォーマンスが低下が発生する場合は、何千も Vlf にはが含まれているトランザクション ログ シーケンスを復元するを回避できます。ほとんどの仮想ログ ファイルがバックアップ ・ ファイルを識別するために記録、 FirstLSNLastLSNの列でログ バックアップ ファイルを参照してくださいするには、次のステートメントを使用して、
    復元 HEADERONLY DISK='C:\folder\file.trn から '

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

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

将来の発生を防ぐ

  • データベースの自動拡張増分を適切なサイズに設定します。

    自動拡張増分のサイズが小さすぎる場合は、多くの仮想ログ ファイル (Vlf) があります、SQL Server でパフォーマンスの低下が発生する可能性があります。自動拡張増分のサイズが大きすぎる場合、トランザクション ログが自動的に拡張するクエリは、成長完了に長い時間待機する必要があります。したがって、SQL Server では、タイムアウト エラーが発生します。これらの問題を解決するには、適切なサイズには、データベースの自動拡張増分のサイズを設定できます。
  • Vlf の多数を除去して、手動拡張を使用してください

    多くの Vlf がトランザクション ログには場合、トランザクション ・ ログのサイズを小さくし、ピークのビジネスを手動拡張を使用して要求を満たすために前に増加します。たとえば、トランザクション ログは、適切な平均のサイズが大きくインクリメントまたは、1 つの手動の成長に増加します。したがって、トランザクション ログのサイズは、ピーク時の容量に達するし、ログのバックアップ ファイルは頻繁かつ定期的な単位でスケジュールします。また、トランザクション ログが切り捨てられる可能性があります、およびトランザクション ログ Vlf サイクルで再利用できます。
  • 縮小し、手動でトランザクション ログを大きく方法

    多くの Vlf がログを修正するには、ログの圧縮し、もう一度手動で増加するこれらの手順に従います。
    1. 場合は、データベースの完全または一括ログ復旧モデルでは、アクティブな Vlf を切り捨てられると、再利用するには、トランザクション ログのバックアップがあります。
      BACKUP LOG databasename TO DISK='C:\folder\log_backupfile.trn'

      SSMS を使用して、トランザクション ログ ファイルをバックアップする方法の詳細については、次の Microsoft Developer Network (MSDN) web サイトを参照してください。Transact SQL ステートメントを使用して、トランザクション ログ ファイルをバックアップする方法の詳細については、次の MSDN web サイトを参照してください。
    2. トランザクション ログ ファイルの論理名を確認するのには、次のステートメントのいずれかを実行します。
      ステートメントの 1
      exec sp_helpfile 
      文 2
      select * from sys.sysfiles 
      目的のサイズに、トランザクション ログ ファイルのサイズを小さく、次のコードを使用します。
      DBCC SHRINKFILE(transactionloglogicalfilename, TRUNCATEONLY) 
    3. 適切なサイズには、トランザクション ログ ファイルのサイズを大きくことができます。トランザクション ログ ファイルのサイズ、ピーク時の通常のサイズに拡大することをお勧めします。したがって、 自動拡張 インクリメントが回避されます。トランザクション ログのサイズを設定すると、SSMS では、データベースのプロパティページを使用してまたは次の使用例 データベースを変更します。 構文:
      MODIFY FILE ( NAME = transactionloglogicalfilenae, SIZE=newtotalsize MB) 

      SSMS のデータベースのサイズを大きく方法の詳細については、次の MSDN web サイトを参照してください。
      SSMS のデータベースのサイズを大きく方法
      詳細については、 ALTER データベース ファイルを変更します。 構文は、次の MSDN web サイトを参照してください。

詳細

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

たとえば、LSN の最初のメッセージの最初の番号は1です。しかし、LSN の 2 番目のメッセージの最初の数字は100001に。このシナリオでは、最初の情報メッセージと情報メッセージの 2 番目の時間の間で使用される 100,000 の Vlf があります。そのため、多くの仮想ログ ファイル (Vlf) が断片化されたトランザクションをログに記録されたログ、次をましょう。

{ログがバックアップされます。データベース: mydbname、date(time) の作成: 2010/07/08(12:36:46)、最初の LSN: 1:5068:70、最後の LSN: 1:5108:1、ダンプ デバイス数: 1、デバイス情報: (ファイル = 1、タイプ = ディスク: {C:\folder\logbackup1.trn})。これは情報メッセージのみです。ユーザーの操作は必要ありません。

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

次の表の詳細については、製品や、ルールが評価される対象となる SQL Server のバージョンで SQL Server のインスタンスに「「現象」に記載されている条件を自動的確認するツールを提供します。

元に戻す全体を表示する
ルールのソフトウェアルールのタイトル仕訳ルールの説明ルールが評価される対象となる製品のバージョンです。
システム センターのアドバイザーSQL Server のトランザクション レプリケーションでは、ログ リーダー エージェントのパフォーマンスがトランザクション ログ VLF の数のサイズによって影響を受けるTLOG Vlf の数が存在、トランザクション レプリケーションを検出しましたこの SQL Server のインスタンスのサイズがかなり大きいです。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 の増分サービス モデルの詳細については、次のマイクロソフト サポート技術資料を参照する次の文書番号をクリックしてください。
935897 報告された問題に対する修正プログラムを提供する SQL Server チームの増分サービス モデルは
名前付けスキーマを SQL Server の更新プログラムの詳細については、次のマイクロソフト サポート技術資料を参照する次の文書番号をクリックしてください。
822499Microsoft SQL Server のソフトウェア更新プログラム パッケージの新しい命名方式
ソフトウェア更新プログラム関連用語の詳細については、次の資料番号をクリックして Microsoft サポート技術情報資料を参照してください。
824684 マイクロソフト ソフトウェア更新プログラムの説明で使用される一般的な用語の説明

プロパティ

文書番号: 2455009 - 最終更新日: 2014年1月7日 - リビジョン: 5.0
この資料は以下の製品について記述したものです。
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Evaluation Edition
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Standard Edition for Small Business
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Workgroup
キーワード:?
kbqfe kbfix kbexpertiseadvanced kbsurveynew kbmt KB2455009 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:2455009
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com