SSDTスキーマ比較は、BULK INSERTの進行中は機能しません


11

私は、SFSとSSDTの両方と一緒にTFS /ソース管理を使用する大規模なETLおよびDWプロジェクトで働いています。

今日、SSISパッケージがデータベーステーブルへの一括挿入を実行している間、そのデータベースに対してSSDTスキーマ比較を実行できないことがわかりました。一部のパッケージの完了には非常に長い時間がかかるため、これは残念です。データベースのバージョン管理のためにSSDTプロジェクトに保存するために、スキーマ比較機能を使用してデータベース構造への変更を検出します。

これについてもう少し詳しく見てみると、SSDTのスキーマ比較関数OBJECTPROPERTY()が、データベースのテーブルでシステム関数を呼び出すSQLスクリプトを実行していることがわかりました。特に私の場合、が現在一括挿入されているテーブルを参照する場合、への呼び出しはすべてOBJECTPROPERTY(<object_id>, N'IsEncrypted')ブロックされているよう<object_id>です。

Visual Studioでは、SSDTスキーマ比較はしばらくするとタイムアウトし、違いが検出されなかったと主張します。

SSDTでこの問題の回避策はありますか、それともMS Connectバグレポートを提出する必要がありますか?

または、BULK INSERTはSSISパッケージからOBJECTPROPERTY行われるので、テーブルの呼び出しをロックせずにこの挿入を行う方法はありますか?編集: SSIS OLE DB宛先では、「テーブルのロック」からチェックマークを削除できます。チェックマークはそれを実行しますが、状況によってはパフォーマンスが低下する可能性があります。一部のオブジェクトがロックされている場合でも、SSDTスキーマ比較でその機能を実行できるようにするソリューションの方がはるかに興味があります。


見てい一括インポート用の制御ロック動作を -あなたは「バルクロードのテーブルロック」が有効になっていることがあります。また、BULK INSERTがTABLOCKを
stuartd

テーブルロックを取得している場合は、それを無効にすると(technet.microsoft.com/en-us/library/ms177445.aspx)、タイムアウトが原因で接続が発生するため、接続が発生する原因が何であれ、ロードが速くなる場合があります。変更がないと言うだけでなく、失敗するのは非常に少ない
Ed Elliott

返信ありがとう、スチュワードとエドエリオット。パフォーマンス上の理由から、実際にはテーブルをロックする必要があることがわかりました。私の意見では、SSDTはデータベースを比較するだけで、データベース内のオブジェクトに変更を適用しないため、これを処理できるはずです。これに対処するために接続ポストを作成します。
Dan

3
内部は私の強みではありませんが、私が理解しているように、あなたはテーブルにロックをかけています。行われるロックは、バルク挿入がスキーマの検証に必要なロックと互換性がないためです。関連する読書BOL スキーマロック
billinkc 2015

スキーマ比較をロード操作と並行して実行する必要がある理由を説明してください。おそらく代替案は、データベースの参照モデルを持つことです。データはなく、スキーマのみ。それに対して比較を実行し、参照モデルを最初に更新せずに、これらの一括操作が実行されている実際のデータベースを誰も変更しないようにします。
billinkc 2015

回答:


19

OBJECTPROPERTYコールは、スキーマ安定性のみである(SCH-S)ロック、必要と互換性のないスキーマ変更(SCH-M)ロックとを。

BULK INSERTいくつかの状況でSCH-Mロックがかかります。これらは、Books Onlineの一括インポートを最適化するためガイドラインの「一括インポート時のテーブルロックとログ」セクションにリストされています。

一括インポートロック

宛先テーブルがクラスター化されている場合、トレースフラグ610を有効にすると役立つ場合があります。これらの一連の投稿全体とデータ読み込みパフォーマンスガイドを読んで、この方法を選択する場合は十分にテストしてください。

SSDT IsEncryptedがテーブルのプロパティをチェックする理由がわかりません。それが理にかなっているシナリオを想像することはできませんが、それはSSDTの人々にとっての問題です。


3
これは非常に包括的で満足のいく答えでした。どうもありがとうございました。
Dan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.