私の上級DBAは、デフォルトではSQLクエリを実行してもテーブルはロックされないと言っていました。
SQL Server Reporting Services(SSRS)レポートにいくつかの問題がありましたが、ロックおよびいくつかのエラーが発生しているようです。
私はググリングをしましたが、何も見つけることができませんでした。
SSRSレポートは、クエリ対象のテーブルをロックしますか?
この動作を具体的に文書化したMSDNドキュメントはありますか?
私の上級DBAは、デフォルトではSQLクエリを実行してもテーブルはロックされないと言っていました。
SQL Server Reporting Services(SSRS)レポートにいくつかの問題がありましたが、ロックおよびいくつかのエラーが発生しているようです。
私はググリングをしましたが、何も見つけることができませんでした。
SSRSレポートは、クエリ対象のテーブルをロックしますか?
この動作を具体的に文書化したMSDNドキュメントはありますか?
回答:
短い答え:いいえ
より長いです...
SQL Serverは、SSRSがクエリを送信していることを認識していません。したがって、SSRSからのクエリは、他のクエリと同じように実行されます。
クエリオプティマイザーがSSRSクエリにテーブルロックを使用することを決定する可能性が高くなります。もちろん、別の問題かもしれませんが、それは別の質問です
私の先輩は、SQLクエリの実行ではデフォルトでテーブルをロックしないと私に言った。
これは本当です。ただし、クエリがテーブルをロックできないという意味ではありません。
SSRSレポートは実際に、照会されているテーブルをロックしますか?
SSRSは、データベースに対してクエリまたはストアドプロシージャを実行することにより、レポートの表示に使用されるデータを取得します。
このクエリは開発者によって定義され、分離レベルと関係する行数によっては、1つまたは複数のテーブルがロックされる可能性があります。(実際、意図的にこれを実行したい場合があるかもしれません。)結論として、クエリのロックがどのように機能するかは開発者次第です。SSRSはこの問題を解決できません。そのため、ドキュメントはありません。
検討してください(例):
READ UNCOMMITTED
ダーティリードが問題ない場合に使用するレポートの実行中にロックがあることをどのようにして知っていますか?レポートのソースであるクエリ/ストアドプロシージャをチェックし、それ自体が正常に機能していることを確認することをお勧めします。
ソースクエリが正常に機能していることが確かな場合は、SQLサーバープロファイラーを使用して問題を特定してください。以下のリンクが役立つ場合があります:https :
//stackoverflow.com/questions/9107383/sql-server-profiler-capture-calls-to-your-databases-stored-procs-during-ssrs
SET TRANSACTION ISOLATION LEVEL
たとえばREAD UNCOMMITTED
ダーティリードのリスクを気にしないかどうかでデータセットクエリを開始することで、迅速な修正を行いました。