web-dev-qa-db-fra.com

Importer et exporter Wizard avec colonne d'identité

Je souhaite déplacer des données d'une base de données à une autre, tout en conservant les valeurs de la colonne d'identité dans l'ancienne base de données. Lorsque j'exécute l'assistant, une erreur de validation "Erreur d'insertion dans la colonne en lecture seule" "ChannelID" s'affiche.

Où ChannelID est une colonne d'identité sur cette table . Comment puis-je remplacer la fonctionnalité d'identité afin de pouvoir importer les données?

55
Elad Lachmi

Vous aurez besoin d'activer l'insertion d'identité. Il y a une case à cocher lorsque vous cliquez sur Modifier les mappages.

102
MichaelHouse

La réponse de Byte56 est correcte - cochez la case "Activer une insertion d'identité" dans l'écran Modifier les mappages. Je voulais simplement souligner que la liste "Sélectionner les tables et les vues sources" prend en charge la sélection multiple. Vous pouvez donc maintenir la touche Maj ou Ctrl enfoncée pour sélectionner plusieurs tables dans la liste. 

8
OffTheRadar

Dans EDIT COLUMN MAPPINGS , Tick ENABLE IDENTITY INSERT. Cliquez ensuite sur le bouton EDIT SQL .

Changement

[MyID] int NOT NULL,

dans

[MyID] int IDENTITY(1,1),

Fonctionne pour importer la base de données MS Access. Cela préserve les données du champ Numéro automatique en cours de conversion en colonne Identité.

5
hubert17

Vous devez utiliser SET IDENTITY INSERT ON pour autoriser l'insertion de valeurs dans une colonne IDENTITY.

Voici un link à MSDN

5
il_guru

Je viens de mettre à niveau vers SQL Server Management Studio 2017. J'ai essayé de cocher la case "Utiliser l'identité" dans la boîte de dialogue Modifier les mappages mais cela n'a pas fonctionné. Lors de la mise à jour d'une table existante, l'assistant ne vous permet pas de modifier le code SQL. Au lieu de cela, j'ai pu l'enregistrer sous forme de package sur mon disque dur. J'ai ensuite édité le fichier dans le Bloc-notes, en recherchant "identité". Effectivement, la propriété a été définie sur true, ce qui, selon les commentaires contenus dans le fichier même, signifie que la valeur de la colonne d'identité est copiée à partir de la source. Si vous le définissez sur false, la valeur est générée automatiquement dans la destination. J'espère que cela t'aides.

1
SteveB

SQL Server 2008 R2 utilisant SSMS 2008 R2.

Activer simplement l'identité sur les "Edit Mappings" ne conserve pas identity = true. Je dois modifier manuellement le SQL pour chaque table et inclure la propriété IDENTITY dans le code SQL.

Exemple: ADD MS_IDENT numérique (18,0) IDENTITY NOT NULL,

1
Joseph

J'ai passé du temps à essayer de trouver une solution à ce problème.

J'ai une base de données d'accès avec plus de 300 tables et en utilisant l'outil d'importation SSMS2017, je ne pouvais pas l'obtenir pour conserver la clé primaire et le numéro automatique, sans modifier manuellement la configuration pour chaque table .... ce n'est pas bien ..

Au final, j'ai utilisé un outil créé par bullzip, (MS Access to MSSQL) qui me permet de convertir un accès d'accès à mssql (ils disposent également d'un outil permettant d'accéder à MySQL).

l'outil fait le travail pour vous, qu'il s'agisse d'un script si vous avez une petite table ou directement sur le serveur.

Tous les identifiants sont intacts et les numéros de téléphone sont également présents. 

travail accompli.

0
Andie