1

現在、実稼働 SQL Server 2008 R2 サーバーの db ログが制御不能になっています。

  • DATA ファイル: D:\Data...\MyDB.mdf = ディスク上の 278859 MB
  • LOG ファイル: L:\Logs...\MyDB_1.ldf = ディスク上の 394542 MB

上記のサーバーには、午前 1 時にスケジュールされた毎日のバックアップと、15 分ごとのトランスログ バックアップがあります。

データベースは完全復旧モデルでサブスクライバーに複製されます。レプリケーションは上のノード (パブリッシャー) からプッシュされます。サブスクライバ上の同じ db ログ ファイルは、ディスク上で ~< 100 GB です。

私が試して修正したこと:

  1. データベースの完全バックアップを実行します (1 時間 47 分かかります)
  2. 15 分ごとに実行されるトランスログ バックアップ ジョブを実行します。(1分20秒かかります)
  3. データベースの別の完全バックアップを実行します

上記の方法では何も機能しなかったため、DBCC SHRINKFILE を使用しても機能しないログ ファイルを圧縮しようとしました。サイズはいつもと変わりません。

何が間違っているのか、または上記の問題を解決するために SQL Server DBA として何をする必要があるのか​​教えてください。

4

4 に答える 4

0

sp_who2 を実行した後、制御不能に増大している長時間実行されているトランザクションがログに記録されていることに気付きました。その SPID で kill を使用しましたが、ログ ファイルの圧縮を進めていません。

于 2016-02-11T20:30:03.590 に答える
0

トランスログ ファイルの圧縮を妨げる可能性のあるもの:

  1. データベースで実行時間の長いトランザクションが発生しています
  2. レプリケーション ディストリビューション エージェントは非常に頻繁に実行されます

トランスログ ファイルのサイズを見ると、2 番目の可能性が原因である可能性が最も高いです。

レプリケーション ディストリビューション エージェントは非常に頻繁に実行されます

SQL Server ログ リーダー エージェントは、translog ファイルを使用済みとしてマークし、圧縮しないようにします。これは、translog ファイルのバックアップ後に SQL Server が行うことです。このプロセスが頻繁に長時間発生すると、トランスログのスケジュールされたバックアップでトランスログ ファイルが圧縮されなくなる可能性があります。

このMSDN トランザクションの説明と、ログ リーダー エージェントの変更方法を参照してください。

同様の問題を説明する MSDN フォーラムのスレッドには、トランスログ ファイル ( DBCC OPENTRAN ) をブロックしている可能性のある実行中のトランザクションを特定するのに役立つ DBCC クエリがあります。

データベースで実行時間の長いトランザクションが発生しています

DBCC OPENTRAN を使用して実行時間の長いトランザクションが発生しているかどうかを確認し、どのプロセスが実行されているかを確認して、それをどうするかを決定できます。長時間実行されているトランザクションが終了するとすぐに、ログ ファイルを圧縮できるはずです。

于 2016-02-10T22:18:23.770 に答える
0

同じテーブルで空のデータベースを作成し、移行スクリプトから古いデータベース データを空のデータベースに移行する必要があります。例: INSERT INTO customers(cust_id, Name, Address) SELECT cust_id, Name, Address FROM olddb.customers

-- このスクリプトは、新しい空のデータベースで実行する必要があります

于 2016-05-29T11:38:28.270 に答える
-2

ログファイルを手動で縮小できます1.データベースを右クリック>タスク>縮小>ファイル>ファイルタイプ=ログ[ok]より

于 2016-05-29T12:57:30.340 に答える