web-dev-qa-db-ja.com

SSISに新しいレコードを挿入する前に宛先テーブルを空にする方法は?

SSISを使用して、新しいシステムで後で使用するために新しいデータを生成および変換します。 SSISパッケージを実行するたびに問題が発生し、宛先テーブルに新しいレコードが挿入され続けます。

最初に宛先テーブル(/ OLE DB Destination)を空にしてから、新しく生成されたレコードを挿入するにはどうすればよいですか?

現在、この問題の回避策はdelete from DestTableパッケージを実行する前に。

21
SamekaTV

削除ステートメントをExecute SQL Taskに入れます。次に、それをフローの最初のコンポーネントにします。コンポーネントは次のようになります。

enter image description here

38
TsSkTo

SQL実行タスクを作成します。最初に実行してください。 sqlstatmentの場合。

Truncate table DestTable

Truncate tableを使用すると、deleteを使用するよりも、すべてのインデックスが無視され、すべてが削除されるため、より適切です。

少しの背景情報について。テーブルの削除ではなく、テーブルの切り捨てを使用する理由を説明します。テーブルの削除は行ベースの操作です。つまり、各行が削除されます。テーブルの切り捨ては、データページ全体の位置が移動するデータページ操作です。 100万行のテーブルがある場合、テーブルを切り捨てる方がはるかに高速で、テーブル削除ステートメントを使用することになります。

30
DaImTo

Truncateテーブルの使用に関する注意点の1つは、前述の理由により、より良い結果が得られることです。ただし、SSISシステムアカウントに追加の権限も必要です。これらは本番環境で使用可能であることを確認する必要があります。そうでない場合は、削除を使用する必要があります。

MSDNリファレンス

7
WaitForPete

あなたはこれを使用する必要があります

truncate table table_name

これはテーブルを空にします

0
vhadalgi