web-dev-qa-db-ja.com

インポートとエクスポートWizard Identity列を使用

古いDBのID列の値を保持しながら、あるDBから別のDBにデータを移動したい。ウィザードを実行すると、検証エラー「読み取り専用列「ChannelID」への挿入に失敗しました」が表示されます。

ここで、ChannelIDはそのテーブルのID列です。データをインポートできるようにするために、ID機能をオーバーライドするにはどうすればよいですか?

61
Elad Lachmi

ID挿入を有効にする必要があります。 [マッピングの編集]をクリックすると、チェックボックスが表示されます。

108
MichaelHouse

Byte56の答えは正しいです-[マッピングの編集]画面で[IDの挿入を有効にする]をオンにします。 [ソーステーブルとビューの選択]リストは複数選択をサポートしているため、ShiftまたはCtrlを押しながらリスト内の複数のテーブルを選択できることを指摘したかっただけです。

8
OffTheRadar

列マッピングの編集で、IDENTITY INSERTを有効化にチェックマークを付けて、SQLの編集ボタンをクリックします。

変化する

[MyID] int NOT NULL,

[MyID] int IDENTITY(1,1),

MS Accessデータベースのインポートで機能します。これにより、ID列に変換されるオートナンバーフィールドのデータが保持されます。

5
hubert17

SET IDENTITY INSERT ONを使用して、IDENTITY列に値を挿入できるようにする必要があります

ここにMSDNへの リンク があります

5
il_guru

SQL Server Management Studio 2017にアップグレードしました。[マッピングの編集]ダイアログの[IDを使用]チェックボックスをオンにしようとしましたが、機能しませんでした。既存のテーブルを更新するとき、ウィザードではSQLを編集できません。代わりに、ハードドライブにパッケージとして保存することができました。次に、メモ帳でファイルを編集して、「ID」を検索しました。案の定、プロパティはtrueに設定されています。これは、ファイル自体内のコメントによれば、ID列の値がソースからコピーされることを意味します。 falseに変更すると、宛先で値が自動生成されます。お役に立てれば。

2
SteveB

SSMS 2008 R2を使用するSQL Server 2008 R2。

[マッピングの編集]でIDを有効にするだけでは、identity = trueは保持されません。各テーブルのSQLを手動で編集し、SQLコードにIDENTITYプロパティを含める必要があります。

例:ADD MS_IDENT numeric(18,0)IDENTITY NOT NULL、

2
Joseph

私はこの解決策を見つけるために時間を費やしました

300以上のテーブルを持つアクセスデータベースがあり、SSMS2017インポートツールを使用して、各テーブルの構成を手動で編集しないと、プライマリキーと自動番号を保持することができませんでした。

最後に、bullzip製のツール(MS Access to MSSQL)を使用して、mssqlへのアクセスを変換できるようにしました(MySQLへのアクセス用のツールもあります)

このツールは、小さなテーブルがある場合はスクリプトを使用せずに、またはサーバーに直接、作業を行います。

すべてのIDはそのままで、オートナンバーもそこにあります。

仕事完了。

0
Andie