Azure SQL Managed Instanceを用いたシステムでSQLTransactionに関するエラーが発生している。

カザイユウキ 風井勇輝 0 評価のポイント
2026-01-27T00:16:02.15+00:00

ご担当者様

Azure SQL Managed Instance を用いたシステムを運用しています。

SQLTransactionに関するエラーが発生しており、エラーの原因と対策について教えてください。
<エラーについて>

     ・アプリケーション側で「この SqlTransaction は完了しています。再度使用することはできません・」とのメッセージログがあった。
     ・同時間のDBのログ(xp_readerrorlog.rpt)を参照すると、 バックアップを作成しているように見えた。
   また合わせて、Azure SQL Managed Instanceの各ログの参照方法についてもご教授ください。     (1)SQL Serverのトレース(ログ)、エラーログ
   (2)データファイルが拡張した履歴  
   (3)ファイルグループが拡張した履歴
   (4)断片化率の確認  
   (5)断片化の解消履歴

以上 よろしくお願いいたします。

Azure SQL Database
Azure SQL Database
Azure リレーショナル データベース サービス。
{count} 件の投票

1 件の回答

並べ替え方法: 最も役に立つ
  1. Saraswathi Devadula 13,980 評価のポイント Microsoft 外部スタッフ モデレーター
    2026-01-27T04:39:48.41+00:00

    Hello カザイユウキ 風井勇輝

    こんにちは、Azure SQLマネージドインスタンスでSQLトランザクションに関するエラーが発生しているようですね。具体的には、「This SqlTransaction is completed, and it it back back use not again used.」というメッセージが表示されており、トランザクションはすでに完了しており再利用できないことを示しています。

    このような状況は、取引ログが切り詰められないようにしている進行中の取引や活動がある場合によく起こり、このような問題を引き起こすことがあります。バックアップが同時に進行中だと指摘されたので、これが一因かもしれません。診断や問題解決のために試せることは以下の通りです:

    1. ログ切断のチェック:以下のクエリを使ってログ切断を妨げている原因を理解しましょう:
         SELECT [name], log_reuse_wait_desc FROM sys.databases;
      
      これにより、トランクションを妨げるアクティブなトランザクションやその他の条件があるかどうかを特定できます。
    2. アクティブなトランザクションを確認する:ログの切断を妨げているアクティブなトランザクションがある場合は、ログ空間を再利用するためにそのトランザクションをコミットまたはロールバックする必要があるかもしれません。
    3. レプリケーションやCDCを調べてみてください:レプリケーションや変更データキャプチャ(CDC)をオンにすると、ログの切り捨ても防げるかもしれません。この点を確認し、これらの構成に関連する誤りを調べることができます。
    4. 同時運用の監視:特にバックアップや長期取引などの同時運用を監視し、現在の取引への影響を評価しましょう。
    5. ログ報告:追加のログ情報を得るために、さまざまなログの確認方法をご紹介します。
      • 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');
        

    この情報が取引エラーの解決に向けた参考になれば幸いです!もし追加の問題や具体的な点を見つけたら、ぜひ教えてください!

    フォローアップの質問:

    1. 同じ時期にログ切断に影響を与える可能性のある他の特定の操作はありますか?
    2. あなたのデータベースでレプリケーションやChange Data Capture(CDC)が有効になっているか確認できますか?
    3. この問題は初めてですか?それとも繰り返し起こる問題ですか?
    4. バックアップポリシーはどのように設定されていますか?頻繁に実行されるように設定されていますか?また、これらのエラーが発生する際に何かパターンに気づきましたか?

    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

    0 件のコメント コメントはありません

お客様の回答

質問作成者は回答に "承認済み"、モデレーターは "おすすめ" とマークできます。これにより、ユーザーは作成者の問題が回答によって解決したことを把握できます。