多くのビューが CDC テーブルに依存しているため、CDC ( Change Data Capture ) テーブルが必要な Visual Studio 2012/2010 でデータベース プロジェクトを作成しようとしています。cdc スキーマ/テーブルをインポートする方法が見つかりませんでした :(。多くのブログで、cdc のインポートがサポートされていないことを読んでください。回避策はありますか。提案してください
2 に答える
通常、CDC テーブルをデータベース プロジェクトで作成することは実際には望ましくありません。sys.sp_cdc_enable_table
を使用
して作成する必要があります。データベース プロジェクトが通常の方法でテーブルを作成できるようにすると、CDC テーブルが存在することになります。ただし、変更データ キャプチャは実際には有効になりません。
明らかに、sys.sp_cdc_enable_table への呼び出しを Pre または Post スクリプトでスクリプト化できますが、私が知る限り、どちらの場所も理想的ではありません。
sys.sp_cdc_enable_table 呼び出しを Pre スクリプトに入れると、すべての元のテーブルが存在するわけではない (新しい展開では存在しない) か、これらの元のテーブルは後に発生するメインの展開の一部として形状が変化します。プレが実行されます。
Post スクリプトに sys.sp_cdc_enable_table 呼び出しを配置すると、既存の CDC テーブルに依存するビューをメイン データベース プロジェクトの展開の一部として展開することはできません (DB プロジェクトでエラーや警告がないわけではありません)。
CDC テーブルの存在に依存するビュー、関数、またはストアド プロシージャをあまり多く持たないことをお勧めしますが、それでは遅すぎるように思えます。
補足: 一般的に言えば 、cdc テーブルを直接参照するのではなく、 cdc.fn_cdc_get_all_changes_およびcdc.fn_cdc_get_net_changes_関数を使用する必要があります。変更データ キャプチャ データのクエリ
を参照
してください。 .
残念ながら、sys.sp_cdc_enable_table への呼び出しをスクリプト化するのと同じ時点でスクリプト化せずに、これらの余分なビューを作成する良い方法はないようです。
(正直なところ、他の誰かが実際に問題を解決するより良い答えを出すことを望んでいます)