私はSQL Server 2008 R2で作業しており、作業するために別の場所に正確にレプリケートする必要があるプロダクションテーブルを用意しています。私は最初にすべてを移動して(一度オフに)ジョブを実行して、毎日更新/挿入を毎日更新するジョブを実行します。タイムスタンプ値を持つレコードのコピーを作成する方法
毎日のジョブでは、本番表を見て、(作成された日付に基づいて)挿入する必要がある新しい値を見つけ、更新する必要がある既存の値を見つけます。新しい値はすべて挿入され、変更された値はすべて更新されます。
ジョブは、これらの行を本番表からプルし、それらを他の場所にあるコピー表に適用します。タイムスタンプの列に問題があります。プロダクションテーブルにはタイムスタンプカラムがあり、(タイムスタンプカラムとしても作成された)コピーテーブルを更新するときに、これをどのように処理すべきかわかりません。
production.timestamp_col = copytable.timestamp_col(タイムスタンプ列を更新できません)を設定するとエラーが発生します。
コピーテーブルの列を&に変換すると、本番表から選択した値が何かに変換されます。 )、自分の値を入れて(テーブルの正確なコピーを持たない)、または切り捨て/切り捨てを行い、毎回再作成します(データ量のために非効率的です)。
このような状況で、最良のアプローチは何でしょうか?
おかげSQLで
スケジュールされたベースでデータをコピーするには、レプリケーションが最適です。あなたが言いました。今すぐタイムスタンプ。タイムスタンプを行のGUIDと考えてください。これは、すべてのユニバースで行を一意にマークします;-)これが、テーブルにタイムスタンプ列を1つだけ持つことができる理由です。したがって、同じタイムスタンプ値を持つ2つの行を持つことはできません。これは、一部のレプリケーションシナリオで役立ちます。 – shadow