2011-06-26 14 views
0

主キー/外部キー制約に内部的に関連する3つのデータベーステーブルのインポートエクスポートモジュールを実装する必要があります。データのインポートエクスポートの問題C#/ SQL Server

私は両方の部分を簡単にsqlにxml/linqへのc#/ linqを使用して実行できます。問題は、エクスポートされたデータをデータベースにインポートする際に、主キーテーブルのIDがxmlファイルのIDを取得/割り当てせずに再生成されていることです(自動インクリメントの場合は自然)。このため、他のテーブルのデータをインポートすることはできず、主キー制約が違反しているエラーを表示することはできません。

私の目標は、すべてのデータをインポートし、プライマリ/外部キーをそのまま維持することです。

今、私はこの問題を解決するために何ができるのか教えてください。前もって感謝します。

答えて

2

identity insertを使用してID列の値を指定できます。

ID列に明示的な値を指定する場合は、競合を解決する必要があります。データベースにすでにid = 1の行がある場合は、インポートにもid = 1が含まれている場合、SQL Serverはエラーをスローします。あなたはドン場合

1

私たちは常にこのようなタスクにBCP操作を使用しました。

+1

+1またはSQL Server Integration Services - 何度も何度もホイールを改造する必要がありますか? –

0

私はあなたの自動インクリメント何とか他に定義することができます別の主キーを持っているが、主キーを作成しないことを示唆している...あなたは」自動インクリメント

0

に問題はありませんXMLとSQLのidを一致させるには、SCOPE_IDENTITY()を使用し、XML idsからSQL IDへのマッピングを維持して、他の表に適切に外部キー列を挿入する必要があります。

+1

@@ IDENTITYの代わりに 'SCOPE_IDENTITY()'を使用することをお勧めします –

+0

([this blog post](http://blog.sqlauthority.com/2007/03/25/sql-server-identity-vs- scope_identity-vs-ident_current-retrieve-last-inserted-identity-of-record /)理由は... –

+0

@marc_s、正しい、答えを更新しました。 – svick

関連する問題