none
SQLServer2005 Reporting Services データドリブンサブスクリプションでエラーが発生する RRS feed

  • 質問

  • パラメータ化された一連のレポート インスタンスをキャッシュに事前に読み込むため、NULL 配信プロバイダを使用するデータ ドリブン サブスクリプションを作成したのですが、
    一部のレポート インスタンスをキャッシュする際、SqlExceptionが発生して困っております。(エラーの発生件数は日によって異なります。)

    以下、エラー内容
    ---

    System.Data.SqlClient.SqlException:トランザクション(プロセス ID 77)が、ロック 個のリソースで他のプロセスとデッドロックして、このトランザクションがそのデッドロックの対象となりました。トランザクションを再実行してください。

    ---

    データソースにストアドプロシージャを使用しているのですが、分離レベルをRead Uncommittedに変更してもエラーが発生します。

    何かご存じの方がいらっしゃいましたら、ご教示お願いいたします。
    2009年6月14日 12:06

回答

  • こんにちは、nagino です。

    エラーメッセージの通り、デッドロックが発生していると思われます。
    デッドロックは関係する複数のトランザクションで使用されているクエリに依存しますので、デッドロックしているクエリを確認のうえ対処されることをお勧めします。

    トレースフラグを使用したデッドロックの分析方法については以下にあります。
    http://technet.microsoft.com/ja-jp/library/ms178104(SQL.90).aspx

    また、Profiler を使用したデッドロックの分析方法については以下にあります。
    http://technet.microsoft.com/ja-jp/library/ms188246(SQL.90).aspx

    なお、分離レベルの Read Uncommitted は共有ロックを取得しないということであって、デッドロックが起こらないことを保証するものではありません。


    MCITP(Database Developer/Database Administrator)
    • 回答としてマーク pyonkichi 2009年6月19日 22:58
    2009年6月15日 2:18

すべての返信

  • こんにちは、nagino です。

    エラーメッセージの通り、デッドロックが発生していると思われます。
    デッドロックは関係する複数のトランザクションで使用されているクエリに依存しますので、デッドロックしているクエリを確認のうえ対処されることをお勧めします。

    トレースフラグを使用したデッドロックの分析方法については以下にあります。
    http://technet.microsoft.com/ja-jp/library/ms178104(SQL.90).aspx

    また、Profiler を使用したデッドロックの分析方法については以下にあります。
    http://technet.microsoft.com/ja-jp/library/ms188246(SQL.90).aspx

    なお、分離レベルの Read Uncommitted は共有ロックを取得しないということであって、デッドロックが起こらないことを保証するものではありません。


    MCITP(Database Developer/Database Administrator)
    • 回答としてマーク pyonkichi 2009年6月19日 22:58
    2009年6月15日 2:18
  • System.Data.SqlClient.SqlException:トランザクション(プロセス ID 77)が、ロック 個のリソースで他のプロセスとデッドロックして、このトランザクションがそのデッドロックの対象となりました。トランザクションを再実行してください。

    ---

    データソースにストアドプロシージャを使用しているのですが、分離レベルをRead Uncommittedに変更してもエラーが発生します。

    何かご存じの方がいらっしゃいましたら、ご教示お願いいたします。
    pyonkichiさん

    はじめまして。
    naginoさんと重複しますがデッドロックが発生していると思われます。

    原因の特定は、”SQL Server Profiler”を使用することでデッドロックイベントを取得・解析が出来ます。
    (SQLServer Management Studioの[ツール]メニューから起動できます。)

    これによって、一発で原因は特定できると思います。

    参考:http://blogs.timberlandchapel.com/blogs/timberlandchapel/articles/388.aspx

    イベントクラスにDeadlock graphを追加すれば、デッドロック情報のグラフィカル表示も可能です。
    お役に立てば幸いです。
    MCITP(Database Developer/Database Administrator) MCPD(Web Developer) MCTS(SQL Server 2005/Web Applications/Windows Applications)
    2009年6月18日 22:30
  • nagino様、ノブヒデ様

    回答ありがとうございます。返信が遅くなり申し訳ありません。

    教えていただいたツールを使ってデットロックの原因を分析したいと思います。

    2009年6月19日 22:57