web-dev-qa-db-ja.com

エラー0xc0202049:データフロータスク1:読み取り専用列への挿入エラー

SQL Server 2008のインポートおよびエクスポートウィザードを使用しています。データベースをインポートする必要があります。 SQLサーバーのインポート/エクスポートウィザードを開き、次のアクションを実行しました。

  1. 宛先には、「SQL server native client 10」を選択しました。

  2. 次に、1つ以上のテーブルまたはビューからデータをコピーすることを選択しました。

  3. SSISをすぐに実行

しかし、私は次のエラーを受け取りました、

操作が停止しました...

  • データフロータスクの初期化(成功)

  • 接続の初期化(成功)

  • SQLコマンドの設定(成功)

  • ソース接続の設定(成功)

  • 宛先接続の設定(成功)

  • 検証中(エラー)

メッセージエラー0xc0202049:データフロータスク1:読み取り専用列「ActionID」への挿入に失敗しました。 (SQL Serverインポートおよびエクスポートウィザード)

エラー0xc0202045:データフロータスク1:列のメタデータの検証に失敗しました。 (SQL Serverインポートおよびエクスポートウィザード)

エラー0xc004706b:データフロータスク1: "コンポーネント" Destination-AuditActions "(22)"は検証に失敗し、検証ステータス "VS_ISBROKEN"を返しました。 (SQL Serverインポートおよびエクスポートウィザード)

ID列とタイムスタンプ列をインポートできないようですが、これらの値を強制的にインポートするにはどうすればよいですか?

73
john Gu

日付をインポートする前に、以下のクエリを実行してID挿入を設定します。

SET IDENTITY_INSERT TableName ON

次に、インポート操作を実行します。

日付をインポートした後、以下のクエリを実行してID挿入をオフに設定します。

SET IDENTITY_INSERT TableName OFF
24
Kishore

Kishoreの答えを十分に尊重して、パッケージを変更する場合、このアプローチは有効です。インポート/エクスポートウィザードを使用しているため、より簡単な方法は、[列マッピング]タブのEnable Identity Insertボックスをチェックすることです。

インポートエクスポートウィザードで、コピーするテーブルを選択した後、Edit Mappings...ボタンをクリックします

enter image description here

結果の画面で、Enable identity insertプロパティをクリックすると、IDが複製されます。

enter image description here

SET IDENTITY_INSERT TableName ON&OFFを発行した場合と同じ最終結果ですが、これはビルド時に自動的に行われます。

199
billinkc