クエリ時にSSRSはテーブルをロックしますか?


9

私の上級DBAは、デフォルトではSQLクエリを実行してもテーブルはロックされないと言っていました。

SQL Server Reporting Services(SSRS)レポートにいくつかの問題がありましたが、ロックおよびいくつかのエラーが発生しているようです。

私はググリングをしましたが、何も見つけることができませんでした。

SSRSレポートは、クエリ対象のテーブルをロックしますか?

この動作を具体的に文書化したMSDNドキュメントはありますか?


同じ問題がありました。技術的にはあなたの質問に対する回答ではありませんが、SET TRANSACTION ISOLATION LEVELたとえばREAD UNCOMMITTEDダーティリードのリスクを気にしないかどうかでデータセットクエリを開始することで、迅速な修正を行いました。
Jeroen 2012

ただ、将来のためのメモとして、あなたは2012年SQLでのAlwaysOn可用性グループで読み込み可能なセカンダリへの報告の負荷をリダイレクトすることができmsdn.microsoft.com/en-us/library/hh882437.aspx
wBobに

回答:


7

短い答え:いいえ

より長いです...

SQL Serverは、SSRSがクエリを送信していることを認識していません。したがって、SSRSからのクエリは、他のクエリと同じように実行されます。

クエリオプティマイザーがSSRSクエリにテーブルロックを使用することを決定する可能性が高くなります。もちろん、別の問題かもしれませんが、それは別の質問です


mmでは、SRSSはクエリを実行するときにテーブルをロックしようとしますか?
melaos

T-SQLステートメントは、T-SQLステートメントに応じて、ある種のロックまたは別のタイプのロックになります。それはそのステートメントがどこから始まったかに依存しません(SSRS、クエリウィンドウ、アプリなど)
Eric Higgins '11

4

私の先輩は、SQLクエリの実行ではデフォルトでテーブルをロックしないと私に言った。

これは本当です。ただし、クエリテーブルをロックできないという意味ではありません。

SSRSレポートは実際に、照会されているテーブルをロックしますか?

SSRSは、データベースに対してクエリまたはストアドプロシージャを実行することにより、レポートの表示に使用されるデータを取得します。

このクエリは開発者によって定義され、分離レベルと関係する行数によっては、1つまたは複数のテーブルがロックされる可能性があります。(実際、意図的にこれを実行したい場合があるかもしれません。)結論として、クエリのロックがどのように機能するかは開発者次第です。SSRSはこの問題を解決できません。そのため、ドキュメントはありません。

検討してください(例):

  • READ UNCOMMITTEDダーティリードが問題ない場合に使用する
  • スナップショット分離レベルの有効化と使用
  • スタンバイモードでのログ配布、および読み取り専用コピーに対するクエリの実行

2

レポートの実行中にロックがあることをどのようにして知っていますか?レポートのソースであるクエリ/ストアドプロシージャをチェックし、それ自体が正常に機能していることを確認することをお勧めします。

ソースクエリが正常に機能していることが確かな場合は、SQLサーバープロファイラーを使用して問題を特定してください。以下のリンクが役立つ場合があります:https :
//stackoverflow.com/questions/9107383/sql-server-profiler-capture-calls-to-your-databases-stored-procs-during-ssrs


いくつかのブラウザーでレポートを実行していたため、レポートがロックされたプロセスとロックされたプロセスがあるというエラーが発生し続けるためです。
melaos

その場合、レポートが別のユーザーによってロックされているデータを読み取ろうとしている可能性があります(たとえば、誰かが同じレコードを更新している)。コミットされていないデータの読み取りに問題がなければ、すべての「選択」ステートメントに「ロックなし」を追加できます。
Sky
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.