datetime列をサーバー時刻からUTC時刻に変換するスクリプトを作成しています。私はこれを行う関数を持っていますが、マイグレーションスクリプトは次の制約を伴う大きなプロセスの一部として実行されます:データベース移行 - 複数回実行できるUTC変換スクリプト
- スクリプトは複数回実行できなければなりません
SET XACT_ABORT ON; BEGIN TRANSACTION; UPDATE SOME_TABLE SET LastModified = [dbo].[f_ServerToUTC](LastModified) COMMIT TRANSACTION;
ミリ秒単位ではないので:2回)
- これは、これまでのスクリプトで、移行後の周りの
を一時テーブルまたは他のデータを残すことはできません私のシナリオでは重要なことですが、ミリ秒の部分を特定の値に設定して、マイグレーションが既に実行されていることを示しました。しかし、私は、変換されていないデータでこの値に遭遇する確率が高すぎる(十分に与えられている)ように感じます。
私の制約を受けて、スクリプトが実行されたことを示すことができる他の方法はありますか?
ここで賢明に使用する:) 1つのUPDATEで列のすべてのデータを更新する場合、スクリプトを再実行可能にする必要があるのはなぜですか?あなたの配備プロセス/ツールには違いはありますか? –
@Danere - はい、配備プロセスのためです。スクリプトを再実行可能にすると、デプロイの複雑さが大幅に軽減されます。これは例外的なケースで、通常は単純な "if exists、drop X"です。 –