2017-06-12 11 views
0

generating a database upgrade using Sql Server Data Tools's sqlpackage.exeの場合、SSDTがテーブルデータを移行するコードを生成する可能性があります。これは、目的の最終スキーマを持つ新しい一時テーブルを作成し、元のテーブルから新しいテーブルにデータを移動し、テンポラリテーブルの名前を元のテーブルの名前に変更します。データベースのアップグレード時にSqlPackage.exeがデータの移動(テーブルの再作成)を実行する原因の完全な一覧はありますか?

スクリプトのコードは、文PRINT N'Starting rebuilding table <tablename>';の後にあります。

これは、アップグレードで必要な変更を生成する原子DDL文がないためです。他の同様のツールでこのようなケースのlistが見つかりました。しかし、SSDTがデータマイグレーション/テーブルレクレーションを実行するときのドキュメントを見つけることを試みています.DDLを使用してジョブを実行できる状況がいくつか見受けられますが、SSDTはまだテーブルを再作成します(たとえば、クラスタード・インデックスを変更するとき)。

私の質問は、SSDTがデータの移行/テーブルレクリエーション用のコードを生成するとき、どこに文書化されていますか?

答えて

0

いいえ、残念ながらそれは文書化されていません。 SSDTで列の順序を無視する機能を実装する際に、テーブルデータの動きのシナリオを確認する機会がありました。ソースコードが与えられても、予期しない状況や処理されていない状況の「安全」なフォールバックとして扱われるため、テーブルデータの動きにつながる状況の完全なリストを生成することは困難です。

2

データの動きの制御方法をもっと探したい場合は、ReadyRollをお勧めします。 SSDTの状態ベースのアプローチとは異なり、スクリプトを前面に生成し、これをビジュアルスタジオプロジェクトのファーストクラスの展開成果物として組み込みます。つまり、最適なアプローチを選択しなかった場合は、スクリプトをレビューし、重要な変更を加えることができます。

SQLプロンプトコアと同様に、ReadyRoll CoreエディションはVisual Studio Enterpriseユーザーの資格であり、データストレージワークロードと共にインストールされます。 ReadyRollの詳細についてはon the Redgate websiteをご覧ください。

関連する問題