SSISを使用して、新しいシステムで後で使用するために新しいデータを生成および変換します。 SSISパッケージを実行するたびに問題が発生し、宛先テーブルに新しいレコードが挿入され続けます。
最初に宛先テーブル(/ OLE DB Destination)を空にしてから、新しく生成されたレコードを挿入するにはどうすればよいですか?
現在、この問題の回避策はdelete from DestTable
パッケージを実行する前に。
削除ステートメントをExecute SQL Task
に入れます。次に、それをフローの最初のコンポーネントにします。コンポーネントは次のようになります。
SQL実行タスクを作成します。最初に実行してください。 sqlstatmentの場合。
Truncate table DestTable
Truncate tableを使用すると、deleteを使用するよりも、すべてのインデックスが無視され、すべてが削除されるため、より適切です。
少しの背景情報について。テーブルの削除ではなく、テーブルの切り捨てを使用する理由を説明します。テーブルの削除は行ベースの操作です。つまり、各行が削除されます。テーブルの切り捨ては、データページ全体の位置が移動するデータページ操作です。 100万行のテーブルがある場合、テーブルを切り捨てる方がはるかに高速で、テーブル削除ステートメントを使用することになります。
Truncateテーブルの使用に関する注意点の1つは、前述の理由により、より良い結果が得られることです。ただし、SSISシステムアカウントに追加の権限も必要です。これらは本番環境で使用可能であることを確認する必要があります。そうでない場合は、削除を使用する必要があります。
あなたはこれを使用する必要があります
truncate table table_name
これはテーブルを空にします