ビューの上にあるレポートがあります。テーブルの基礎となるビューは15分ごとに更新され、更新サイクルには約1〜2分かかります。この間にレポートを実行すると、レポートに間違った値が表示されます。何らかのロックを適用できる方法があります私は更新が行われたら、レポートを取得し、この問題の他の解決策があるなら、私はSQL Serverの同時実行の問題
感謝を知っている私のreport.Please上のダーティデータを避けることができるようにビューに、 ラヴィ
ビューの上にあるレポートがあります。テーブルの基礎となるビューは15分ごとに更新され、更新サイクルには約1〜2分かかります。この間にレポートを実行すると、レポートに間違った値が表示されます。何らかのロックを適用できる方法があります私は更新が行われたら、レポートを取得し、この問題の他の解決策があるなら、私はSQL Serverの同時実行の問題
感謝を知っている私のreport.Please上のダーティデータを避けることができるようにビューに、 ラヴィ
はあなたをしました反復可能な読み取りモードまたは直列化分離モードでレポートデータを取得することを検討してください。
基礎となるテーブルを更新するために別の方法を使用することを検討します。これらのテーブルを1〜2分間更新する代わりに、別のスキーマに「シャドウ」テーブルを作成します。 (そして、一時的な保持のための第3のスキーマを持っています。)これにより、ユーザーが見ることのできないテーブルで作業し、単純にメタデータ操作を使用してテーブルを切り替えることができます。そして、あなたはこれを行うことができます。
一つの欠点は、あなたが維持するために、統計、インデックスなどの2セットを持っているということです。統計については、データが単純に増加していて、それ以外は実質的に変化していなければOKです。
http://jahaines.blogspot.com/2009/10/locking-table-while-it-is-being-loaded.html
こんにちはAaron、ソリューションのおかげで感謝しますが、私はデータベースにこの種のアプローチに従うことはありません。 "select文"を使って達成できる他のapprochがあります。データベース。ありがとう – SRK
アーロン・ベルトランの答えが、使用して同義語と同様の方法:
アダムヘインズは、ここでは(私は数年前に彼を示した)この方法については本当に徹底し、ライトアップを持っています
様々なCREATE文は権限をエスカレートするEXECUTE AS OWNERを持つストアドプロシージャでラップできるため、「ロードするテーブル」の1と1:この場合は
は、あなたは2つの同義語を持っています。
Aaronの回答に対するあなたのコメントに基づいて、には、何らかの切り替え方法があるがあります。並行性を高める唯一の方法は、複数の表を使用することです。
シリアル化可能かどうかはわかりません。私はOPが同時性を増やそうとしていると思っています。:-) –