0

私の質問があまりにも簡単に聞こえる場合は、お詫び申し上げます。私は SQL Server を初めて使用するので、どうしてもアドバイスが必要です。私は調査を行いましたが、それについて読んだすべての記事が少し一般的すぎるように見えるため、どのように進めればよいかまだわかりません.

私の仕事は、テーブル ABC (サーバー 1 上) に 3 か月以上前のレコードがないようにすることです。3 か月以上前のレコードは、サーバー 2 のテーブル ABC_ARCHIVE に自動的に移動する必要があります。レコードを処理して削除するだけでは大したことではありませんが、レコードを削除する前に、サーバー 2 にレコードが既に存在することを自動的に確認したいと思います。サーバーから 1.

SSIS パッケージで実行するクエリを使用することを考えました。これは、SQL Server エージェント ジョブで実行されます。私がそれについて別の方法をとるべきだと思うなら、私に知らせてください。不要なコンポーネントを含めることは避けたいと思います。

3 か月以上前のレコードを選択するには、次のようなクエリが必要です。

Select *
From ABC
WHERE [CreateDate] <= DATEADD(mm, -3, GETDATE())

次に、「選択」の代わりに「削除」を使用して同じものを削除します。

行を削除する前に実際に行が転送されたことを確認するには、これら 2 つのクエリの間に何を書き込めばよいでしょうか? サーバー 1 からレコードを削除する前に、レコードが既にサーバー 2 にあることを自動的に確認する方法は? この方法でそれが不可能な場合は、別の解決策を提案していただけますか?

Enterprise x64 エディションを使用しており、アカウントには sysadmin 権限があります。私は SQL エージェントでジョブを作成することに非常に慣れており、SSIS にもある程度慣れています (ヒントは大歓迎です)。

ヒントや提案があれば、とても感謝しています。前もって感謝します!

4

2 に答える 2

1
  1. 移動するレコードの ID のリストを格納するテーブル変数または一時テーブルを作成します。
  2. INSERT ステートメントを実行して、あるデータベースから別のデータベースにレコードをコピーします。
  3. 新しいデータベースに結合された一時テーブルにある ID に基づいて、元のデータベースからレコードを削除します。

このような一時テーブルを使用すると、getdate() の値が絶えず変化するため、刻々と異なるレコードをキャプチャできなくなります。

于 2015-06-24T14:00:34.103 に答える