XTP_CHECKPOINT
について質問があります。
SQL Server 2014を使用しています。単純復旧モデルモードのデータベースがあります。それも複製されています。
開いているトランザクションはありません。 DBCC OPENTRAN
を実行すると、次のように返されます。
「アクティブなオープントランザクションはありません。」
しかし、テーブルを作成またはドロップするか、データを削除しようとするたびに、このメッセージが表示され続けます。
(実際のデータベース名をWordに置き換えましたdatabase_name
)
"'XTP_CHECKPOINT'が原因で、データベース 'database_name'のトランザクションログがいっぱいです。"
なぜこれが起こっているのか、そしてもっと重要なことに、どうすればそれを止めさせることができるのか誰か知っていますか?
そして、はい、データベースは実際には単純復旧モデルモードです。つまり、トランザクションログは自動的に切り捨てられます。
ちなみに、私が完全復旧モードで使用している別のデータベースも同じことを行い、同じエラーを返し始めました。
'XTP_CHECKPOINT'が原因で、データベース 'database_name'のトランザクションログがいっぱいです
ログ増加の設定を無制限に増加させようとしましたが、許可されず、同じエラーが返されました。
ファイルグループだけを除いて、XTPをまったく使用しなくても問題を再現できます。方法は次のとおりです。 http://Pastebin.com/jWSiEU9
同様の問題がありました:レプリケーションはありませんでしたが、メモリ最適化テーブルをテストとして使用した後、データベースをシンプルリカバリモードで使用しましたが、トランザクションログが切り捨てられませんでした。完全バックアップの直後であっても、手動で切り捨てるとエラーが発生しました。
ファイルの最後にある論理ログファイルが使用中のため、ログファイルXを圧縮できません。
手動チェックポイントが失敗しました:
メッセージ41315、レベル16、状態4、行Nチェックポイント操作がデータベースXで失敗しました。
手動チェックポイントは、SQLサービスを再起動した直後にのみ成功しました。これにより、マルチTbデータベースのサイズが原因で、リカバリ状態が4時間になります。また、自動拡張を特定のサイズに設定しようとしましたが、すべて同じ結果になりました。スペースがなくなるまでトランザクションログをいっぱいにしてください。
最後に、昼夜を問わず調査と調査を行った後、 SQL Server 2014 SP1の累積的な更新 をインストールすることにより、問題の解決策を見つけました。
接続アイテム に記載されているように、レプリケーションがこれを引き起こしていないことを最初に確認してください。 sp_repltrans
を実行して、すべてのデータが配布されていることを確認してください。
次に この小さなスニペット があります:
「それは、メモリが最適化されたファイルグループを持つデータベースで発生します。メモリが最適化されたテーブルがあるかどうかは関係ありません。
現在の回避策は、AutoGrownを固定サイズに設定することです。または、リカバリモードをシンプルに変更して、ログを縮小します。」
したがって、レプリケーションのクリーンアップが機能しない場合は、以下を試してください。
checkpoint;
dbcc shrinkfile (Logfile, truncateonly)
alter database [database] modify file (filename = 'TRANSACTIONLOG', FILEGROWTH = 5MB)
これがログファイル用かデータベースファイル用かは明記されていませんが、まずログファイルを試してみて、そうでない場合はデータベースファイルを一定の増加率に設定してみてください。
XTP_CHECKPOINTの問題を解決するために追加された余分なログファイルを削除するとともに、別のログファイルを追加することで問題を回避し、フルバックアップを実行し、プライマリログファイルのサイズを調整し、拡張を制限することができました。
私はこれを顧客と経験しました。ログとメモリ内のFILESTREAMデータファイルは同じドライブにありました。新しいログファイルを作成しましたが(これはほとんど提案されていません)、メモリ内チェックポイントファイル(* .HKCKP)の作成に失敗したため、システムはCHECKPOINTを実行できません。
インメモリFILESTREAMデータを使用して、ドライブのスペースを解放してみてください。