あるデータベース (Oracle) から別のデータベース (SQL Server) に 200,000 レコードを移行する必要があります。SSIS (SQL Server Integration Services) を使用して移行を管理し、既にパッケージを作成しています。
レコードはデータベース内のドキュメントを参照します (HBLOB フィールドを使用)。移行にはかなりの時間がかかるため、変数を境界として使用するクエリを使用して、レコードのサブセットのみを毎回移行するために、SSIS に変数を導入しました。このようにして、稼働日の前にいくつかの履歴レコードの移動を開始できます。
最初は、ID ごとに移動しますが、例として、最初のブロック 1'000 を取得し、次に 2 番目のブロックを取得するなどです。ただし、一部のドキュメント (本番システムにある) はまだ変更できるため、これは不可能です。したがって、まだ移動することはできません。
ここに制約があります:
If "Status" is closed -> the document can be safely taken
(other statuses are draft, pending).
If "CreatedDate" < 2010 -> the document can be moved without taking care of status.
- まず、すべての「古い」ドキュメント (2010 年より前に作成された) を移動できます。
- ステータスが「クローズ」のすべてのドキュメントを移動します。
- 稼働日には、残りのすべてのレコードを移行します。
ただし、このパターンでは、移動したドキュメントを追跡するのは簡単ではありません (ポイント [2])。その間に他のドキュメントがクローズ状態になる可能性があるためです。
重複やデータの欠落のリスクなしにこれらのレコードを移動するためのより良い手順を提案できる人はいますか?