L'insertion dans la table avec une colonne d'Identité, tandis que la réplication des causes d'erreur dans SQL Server
J'ai une table A_tbl
dans ma base de données. J'ai créé un trigger sur A_tbl
pour capturer des enregistrements insérés. Déclencheur est l'insertion d'enregistrements dans ma file d'attente de table B_tbl
. Ce tableau a une Identity
colonne avec la propriété "Pas de réplication" 1.
A_tbl
(Id, nom, valeur) avecId
en tant que clé primaireB_tbl
(id unique, Id) avecuniqueId
commeIdentity
colonne
Déclenchement de code pour ce faire:
Insert into B_tbl (Id)
select i.Id from inserted
Maintenant mon tableau " B " est répliquée sur un autre Serveur de base de données, maintenant, quand je suis à l'insertion dans la table 'A', il est à l'origine de cette erreur:
Explicite valeur doit être spécifiée pour l'identité de la colonne dans la table 'B_tbl" soit lorsque IDENTITY_INSERT est réglé SUR on ou lorsqu'un utilisateur de réplication est de l'insérer dans un PAS POUR la RÉPLICATION de la colonne d'identité. (Source: MSSQLServer, numéro d'Erreur: 545)
Merci de m'aider à résoudre ce problème.
- êtes-vous sûr de spécifier la liste des colonnes dans l'instruction d'insertion? Je pense que vous avez besoin pour définir l'identité insert sur la table en particulier et insérer l'id unique de la valeur par la gâchette
- vous demande de partager la structure de la table, déclenchement de code
Vous devez vous connecter pour publier un commentaire.
Que vous avez à faire quelque chose comme ceci
Fondamentalement, il y a 2 façons différentes pour INSÉRER des enregistrements sans avoir une erreur:
1) Lorsque le IDENTITY_INSERT est mis HORS tension. La CLÉ PRIMAIRE "ID" ne DOIT PAS ÊTRE PRÉSENT
2) Lorsque le IDENTITY_INSERT est définie SUR. La CLÉ PRIMAIRE "ID" DOIT ÊTRE PRÉSENT
Comme dans l'exemple suivant de la même Table créée avec une IDENTITÉ de CLÉ PRIMAIRE:
1) Dans le premier exemple, vous pouvez insérer de nouveaux enregistrements dans la table sans avoir une erreur lors de la IDENTITY_INSERT est ÉTEINT. La CLÉ PRIMAIRE "ID" ne DOIT PAS ÊTRE PRÉSENT de la "INSERT INTO" États et une valeur d'ID unique sera automatiquement ajouté:. Si l'ID est présent à partir de l'INSÉRER dans ce cas, vous recevrez le message d'erreur "Impossible d'insérer une valeur explicite pour identifier la colonne dans la table..."
De SORTIE de la TABLE [dbo].[Les personnes] sera:
2) Dans le Deuxième exemple, vous pouvez insérer de nouveaux enregistrements dans la table sans avoir une erreur lors de la IDENTITY_INSERT est SUR. La CLÉ PRIMAIRE "ID" DOIT ÊTRE PRÉSENT de la "INSERT INTO" États tant que la valeur de l'ID n'existe pas déjà: Si l'ID n'est PAS présent à partir de l'INSÉRER dans ce cas, vous recevrez le message d'erreur "valeur Explicite doit être spécifié pour l'identité de la colonne de la table..."
De SORTIE de la TABLE [dbo].[Les personnes] sera:
Le code du déclencheur doit contenir l'Identité insérer SUR option comme ci-dessous