2012-04-10 33 views
0

SSISのロード中に、従業員テーブルが更新されると、ロックが有効になります。ロックを取得んしかしトレースフラグ1211が機能しない - SQL Server 2008 R2

  1. ALTER TABLE dbo.Employee SET (LOCK_ESCALATION = DISABLE)
  2. DBCC TRACEON (1211,-1)

、テーブル(オブジェクト)とほとんどのために保持されている。しかし

は、次の文を使用して、テーブル上で無効にロックのエスカレーションを持っています1時間。総数更新(INSERT、UPDATE、DELETE文を)のここでの究極の目的は本当にロックを回避するのではなく、成功したテーブルの上に読み込み許可しない程度20万

です。

実際にロックによって影響を受けるテーブル上の約50〜100件の検索/選択クエリと比較して、毎日50,000の範囲でかなりの更新(挿入、更新、削除)が行われます。 BOLから

+0

はここから溶液で先に行き: http://stackoverflow.com/questions/2471055/why-use-a-read-uncommitted-isolation-level – psam

答えて

0

SETのLOCK_ESCALATION = DISABLE

は、ほとんどの場合、ロックのエスカレーションを防止します。テーブルレベルのロックは、 が完全に許可されていません。たとえば、 にシリアライザブル分離レベルのクラスタ化インデックスがないテーブルをスキャンする場合、 データベースエンジンはデータの整合性を保護するためにテーブルロックをとる必要があります。

SSISパッケージのデフォルトIsolationLevel(コントロールフローの空白部分をクリックし、パッケージの所有権を確認してください)。 テーブルにクラスタ化インデックスがありません。

+0

は、設定されたlock_escalation =無効しかしdidntの助けを試してみました。 また、テーブルには現在インデックスがありません。 インデックスは以前は存在しましたが、削除されました。挿入/更新/削除は、テーブル上の約50の検索/選択クエリと比較して、毎日約50,000レコードのデータ更新が大幅に高かった。 インデックスを作成することを検討しています(クラスタ化/非クラスタ化) – psam

+0

ですので、あなたの説明があります。クラスタ化されたインデックスがなければ、SET LOCK_ESCALATION = DISABLEはほとんど無視されます。 – Diego

+0

'set lock_escalation = disable'が有効にならないシナリオがありますか?更新の数が多すぎる場合やその他の場合 – psam

関連する問題