Hello カザイユウキ 風井勇輝
こんにちは、Azure SQLマネージドインスタンスでSQLトランザクションに関するエラーが発生しているようですね。具体的には、「This SqlTransaction is completed, and it it back back use not again used.」というメッセージが表示されており、トランザクションはすでに完了しており再利用できないことを示しています。
このような状況は、取引ログが切り詰められないようにしている進行中の取引や活動がある場合によく起こり、このような問題を引き起こすことがあります。バックアップが同時に進行中だと指摘されたので、これが一因かもしれません。診断や問題解決のために試せることは以下の通りです:
- ログ切断のチェック:以下のクエリを使ってログ切断を妨げている原因を理解しましょう:
これにより、トランクションを妨げるアクティブなトランザクションやその他の条件があるかどうかを特定できます。SELECT [name], log_reuse_wait_desc FROM sys.databases; - アクティブなトランザクションを確認する:ログの切断を妨げているアクティブなトランザクションがある場合は、ログ空間を再利用するためにそのトランザクションをコミットまたはロールバックする必要があるかもしれません。
- レプリケーションやCDCを調べてみてください:レプリケーションや変更データキャプチャ(CDC)をオンにすると、ログの切り捨ても防げるかもしれません。この点を確認し、これらの構成に関連する誤りを調べることができます。
- 同時運用の監視:特にバックアップや長期取引などの同時運用を監視し、現在の取引への影響を評価しましょう。
- ログ報告:追加のログ情報を得るために、さまざまなログの確認方法をご紹介します。
- SQL Serverエラーログ:SQLエラーログには以下をご利用ください:
EXEC sp_readerrorlog; - データファイルおよびファイルグループのサイズ変更:以下のクエリを使ってデータファイルおよびファイルグループの拡張を追跡できます:
SELECT * FROM sys.master_files WHERE database_id = DB_ID('your_database_name'); - 断片化率:断片化を確認するには、動的管理ビューを使って探ることができます:
SELECT OBJECT_NAME(object_id), index_id, partition_id, avg_fragmentation_in_percent FROM sys.dm_db_index_physical_stats(DB_ID('your_database_name'), NULL, NULL, NULL, 'LIMITED');
- SQL Serverエラーログ:SQLエラーログには以下をご利用ください:
この情報が取引エラーの解決に向けた参考になれば幸いです!もし追加の問題や具体的な点を見つけたら、ぜひ教えてください!
フォローアップの質問:
- 同じ時期にログ切断に影響を与える可能性のある他の特定の操作はありますか?
- あなたのデータベースでレプリケーションやChange Data Capture(CDC)が有効になっているか確認できますか?
- この問題は初めてですか?それとも繰り返し起こる問題ですか?
- バックアップポリシーはどのように設定されていますか?頻繁に実行されるように設定されていますか?また、これらのエラーが発生する際に何かパターンに気づきましたか?
https://learn.microsoft.com/en-us/sql/relational-databases/logs/the-transaction-log-sql-server?view=sql-server-ver17
https://learn.microsoft.com/en-us/azure/azure-sql/managed-instance/troubleshoot-transaction-log-errors-issues?view=azuresql-mi