1

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

しかし、SSRSレポートでいくつかの問題が発生していました。これは、ロックとエラーの発生で問題が発生しているようです。

グーグルをしましたが、何も見つかりませんでした。

確認を探すだけで、SSRSレポートは実際にクエリされているテーブルをロックしますか?

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

4

2 に答える 2

5

SSRSはそれ自体では何もロックしません。ロックは、レポートに埋め込まれたクエリによって駆動されます。この質問に答えることができるのはあなただけです。使用されているレポートとクエリを見て、テーブルがロックされているかどうかを確認してください。

通常、クエリはテーブルではなくテーブルのデータをロックします。一貫性のある正しいレポートには、絶対にロックが必要です。NOLOCKヒントを追加するという誤謬に屈して、それを1日と呼ばないでください。間違った結果得られます。

レポートによって引き起こされる本番環境での競合が見られる場合は、多くの解決策があります。可用性グループデータベーススナップショット、またはスタンバイログ配布サーバーを使用して、レポートを読み取り専用サーバーにオフロードします。もう1つのアプローチは、SNAPSHOTのような行バージョンの分離レベルを有効にすることです。

于 2012-09-11T10:08:58.010 に答える
0

SSRSからのストレートselectステートメントの場合、テーブルは確実にロックされます。

NOLOCKを使用して、レポートに表示する必要のある列を含む特定のクエリを作成できます。

ここで、selectクエリには、列名を含む「*」を含めることはできません。

于 2012-09-11T09:20:17.287 に答える