SSISを使用してSQL Server 2008の製品データベースからフラットファイルにデータをダンプし、一括挿入を使用してそれらのフラットファイルをSQL Server 2008開発データベースにロードしています。 SSISパッケージは一括挿入の前にTRUNCATE TABLEステートメントを実行していますが、実行すると、「ステートメントが終了しました。PRIMARYKEY制約の違反。重複キーを挿入できません。」というエラーが表示されます。なぜ切り捨てた後に重複キーがあるのですか?一括挿入の前に主キーをクリアするために必要なことは他にありますか?
テーブルを切り詰めた場合、主キー違反はファイル内の重複データが原因である必要があります。 PK制約なしで新しいテーブルに一括挿入してから、テーブルの重複を確認します(ファイルを直接解析するためのツールやスクリプトを書くよりもおそらく簡単です)。この方法で制約のない模倣テーブルを作成できます。
SELECT * INTO dbo.new_bulk_source
FROM dbo.old_source
WHERE 1 = 0;
次に、このテーブルを参照するようにパッケージを変更し、挿入を実行してから、次のコマンドを実行します。
SELECT key FROM dbo.new_bulk_source
GROUP BY key
HAVING COUNT(*) > 1;
ドーナツの呼び出しは家の中から来ていると思います(または、切り捨てが成功していません)。