0

IDプライマリを持つSQLAzure上のデータベースがあります。SQL Serverインポートおよびエクスポートウィザードを使用した後、データをSQL Server2008R2データベースに転送しました。

ASP.NETアプリケーションは正常に実行され、データを読み取ります。しかし、テーブル'User'に値を挿入しようとすると、エラーが発生します。列'UserId'にnullを挿入できません。

その理由は、アイデンティティ値を生成できないためです。

どうすればこの問題を克服できますか?

PS:SQL Azureからスクリプトを生成しようとしましたが、SQLファイルのサイズが500 MBであり、ホストがその大きなスクリプトの実行を許可していません。

編集:データアクセスにEntityFrameworkを使用します。UserIdフィールドにはIDENTITY property(1,1)があります。

編集SQLAzure移行ツールからスキーマを作成してから、データのインポート/エクスポートを使用してデータをコピーしようとしました。ただし、ウィザードは行間の関係を維持しません。

4

2 に答える 2

0

データのインポート/エクスポートウィザードは、データベースオブジェクトの構造全体を保持しません。

つまり、データをコピーするだけで、データが収まるテーブルの構造全体(IDとキーの定義を含む)はコピーしません。

データをインポートしてから、すべての主キーとデフォルトフィールドを手動で設定して、目的のデータベース定義に一致させるか、Azureインスタンスに接続し、スクリプトの生成オプションを使用して、コピーする前に2008データベースにスキーマを生成することができます。

ただし、実際の答えは、データベースのコピーウィザードを使用してこれを実行する必要があるということです。これは、Azureで正常に機能します。このシナリオのために設計されました。

于 2013-03-19T13:45:58.510 に答える
0

問題は、ウィザードが主キー値を挿入しようとしていたことでした。これはデフォルトでは無効になっています。また、主キーを挿入しないと、関係を維持できないため、問題全体が発生します。

この問題を解決し、確実な移行を行うには、新しいスキーマがすべてのID列を維持していることを確認してください。

ソーステーブルと宛先テーブルを選択するときは、特定のテーブルについて、[マッピングの編集]をクリックし、[ID挿入を有効にする]チェックボックスをオンにして、構造と関係をそのまま維持する主キー値の挿入を有効にします。

于 2014-02-03T19:47:17.150 に答える