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


83

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

  1. 宛先には「SQLサーバーネイティブクライアント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列とタイムスタンプ列をインポートできないようですが、これらの値を強制的にインポートするにはどうすればよいですか?

回答:


28

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

SET IDENTITY_INSERT TableName ON

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

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

SET IDENTITY_INSERT TableName OFF

225

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

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

ここに画像の説明を入力してください

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

ここに画像の説明を入力してください

発行SET IDENTITY_INSERT TableName ONとオフと同じ最終結果ですが、これはビルド時に自動的に行われます。


ID列の問題が解決されたおかげで、タイムスタンプ列に問題が発生しました。私がそれらで何ができるか考えていますか?
john Gu

1
タイムスタンプはここに記載されています:sqlmatters.com/Articles/…–
Niall Connaughton

13
複数のテーブルをインポートする場合は、リストから複数のテーブルを選択し、[マッピングの編集]をクリックして、[ID挿入を有効にする]オプションを選択したすべてのテーブルにワンクリックで適用できます。
pmartin 2016

1
Kishoreソリューションは私の問題を解決していませんが、あなたが提供するものは解決します。どうもありがとう。
MadJlzz 2016

エクスポートした後、次のことを行う必要があるかどうか疑問に思います:SET IDENTITY_INSERT TableNameOFF。ありがとう。
Kevin .NET
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.