SQL Serverデータベースの展開時に、特定のテーブルの新しいデータ状態を含む一時テーブルを作成します。次に、tempテーブルをターゲットテーブルにマージします(実際には個々のinsert、update、deleteステートメントを使用しますが、これはおそらく関係ありません)。実行された挿入/更新/削除はキャプチャされ、ログに書き出されます。ツールテーブルAからテーブルBへのデータ移行スクリプトを生成するツール
実際に適用することなく、展開によって適用される変更について報告することができます。これは、現在、上記のプロセスの最後にトランザクションをロールバックすることによって行われます。しかし、これは特に素晴らしいとは感じません。
ここでは、変更を実行してロールバックする代わりに、テーブルの移行スクリプトを生成します(必要な挿入、更新、削除を実行するSQLコードを生成します)。実際の展開を行いたい場合、このコードは動的に実行されます。そうでない場合、コードは単にログに出力されます。
指定された2つのテーブルの移行スクリプトを生成するコードをまとめておくのは時間がかかることはありませんが、まずこれを行うための既存のツールがないことを確認したかったのですか?
Googleで検索すると、データベース全体の移行について多くの話がありますが、データ移行スクリプトを作成して1つのテーブルを効果的に別のテーブルにマージすることについては何も言及していません。
私の質問は、だれでもそのようなツールを知っていますか?いくつかのデータがあります
解決策はありますか? insert、update、deleteステートメントを使用している場合は、実行する前にそのスクリプトを保存することはできません。これは実際に適用されたもののレコードなのですか? –
@DavidAtkinson私たちが今行っていることは、あなたが記述していることに似ています。ソースとターゲットの間の結合に基づいて、Actions_Plannedテーブル変数を選択します。これには、ターゲットテーブルの既存の値とソーステーブルの新しい値が含まれます。これで、古い列値と新しい列値を含むこの表変数から計画されたアクションが出力されます。次に、ソースとターゲットの表を結合するのではなく、実際に変更を実行する場合は、Actions_Planned表をターゲット表に結合し、実行しようとしていた操作を正確に実行します。 – UberDoodles
また、OUTPUT節を使用してActions_Performedテーブル変数を設定します。この変数を使用して、実際に行われた変更を印刷できます。 Actions_Plannedテーブルを使用してソーステーブルではなく変更を実行する理由は、挿入/更新/削除/実行のいずれかを判断するロジックを複製していないため、何か他のことをしている。 – UberDoodles