@@Identity avec réplication

Le
Larigue
Bonjour.

Nous utilisons SQL SERVER 2005 SP2 pour une réplication de fusion entre 2
tables identiques coté editeur et coté abonné.

Cette table a une colonne identité (avec not for réplication)

Le problème est le suivant :
Aprés l'aplication de la capture instantanée, nous inserons des lignes coté
Abonné
puis procédons à la synchronisation. tout va bien, les nouvelles lignes sont
insérées coté Editeur.
Maintenant lorsque l'on insère une nouvelle ligne coté abonné, la ligne est
insérée avec un nouvel identifiant correct, MAIS la fonction @@IDENTITY
retourne une valeur d'identifiant incohérente.
Et nous avons besoin de cette valeur afin d'insérer d'autres lignes
relationelles dans une autre table avec cette nouvelle valeur d'identifiant.
Nous sommes donc bloqués.
Quelqu'un aurait-il une idée ?
Merci
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrice
Le #11854221
Cf SCOPE_IDNEITY dans la doc. Extrait :

SCOPE_IDENTITY et @@IDENTITY renvoient les dernières valeurs d'identité
générées dans une table de la session active. Toutefois, SCOPE_IDENTITY
renvoie les valeurs insérées uniquement dans l'étendue actuelle. @@IDENTITY
n'est pas limitée à une étendue spécifique.

---
Patrice


"Larigue" news:
Bonjour.

Nous utilisons SQL SERVER 2005 SP2 pour une réplication de fusion entre 2
tables identiques coté editeur et coté abonné.

Cette table a une colonne identité (avec not for réplication)

Le problème est le suivant :
Aprés l'aplication de la capture instantanée, nous inserons des lignes
coté
Abonné
puis procédons à la synchronisation. tout va bien, les nouvelles lignes
sont
insérées coté Editeur.
Maintenant lorsque l'on insère une nouvelle ligne coté abonné, la ligne
est
insérée avec un nouvel identifiant correct, MAIS la fonction @@IDENTITY
retourne une valeur d'identifiant incohérente.
Et nous avons besoin de cette valeur afin d'insérer d'autres lignes
relationelles dans une autre table avec cette nouvelle valeur
d'identifiant.
Nous sommes donc bloqués.
Quelqu'un aurait-il une idée ?
Merci


Marcus
Le #11854201
ok pour SCOPE_IDENTITY.
Mais le meme probleme survient avec un recordset ADO.
C'est a dire que apres un insert dans une table, l'identifiant retourné dans
l'ADODB recordset est incorrect...

"Patrice" a écrit :

Cf SCOPE_IDNEITY dans la doc. Extrait :

SCOPE_IDENTITY et @@IDENTITY renvoient les dernières valeurs d'identité
générées dans une table de la session active. Toutefois, SCOPE_IDENTITY
renvoie les valeurs insérées uniquement dans l'étendue actuelle. @@IDENTITY
n'est pas limitée à une étendue spécifique.

---
Patrice


"Larigue" news:
> Bonjour.
>
> Nous utilisons SQL SERVER 2005 SP2 pour une réplication de fusion entre 2
> tables identiques coté editeur et coté abonné.
>
> Cette table a une colonne identité (avec not for réplication)
>
> Le problème est le suivant :
> Aprés l'aplication de la capture instantanée, nous inserons des lignes
> coté
> Abonné
> puis procédons à la synchronisation. tout va bien, les nouvelles lignes
> sont
> insérées coté Editeur.
> Maintenant lorsque l'on insère une nouvelle ligne coté abonné, la ligne
> est
> insérée avec un nouvel identifiant correct, MAIS la fonction @@IDENTITY
> retourne une valeur d'identifiant incohérente.
> Et nous avons besoin de cette valeur afin d'insérer d'autres lignes
> relationelles dans une autre table avec cette nouvelle valeur
> d'identifiant.
> Nous sommes donc bloqués.
> Quelqu'un aurait-il une idée ?
> Merci





Patrice
Le #11854181
Déjà j'aurais du préciser dans mon message d'avant que le problème se posait
donc par exemple en cas de trigger (l'insertion se fait avec une valeur mais
un trigger qui insére lui-même des données avec un uniqueidentifier mets à
jour @@IDENTITY. SCOPE_INDENTIY permet de récupérer la valeur correcte).

Si le problème persiste, le mieux est sans doute de poser un bout de code
(un formum ADO est peut-êrtre plsu adapté, car SCOPE_IDENTITY fonctionne à
priori et il y a donc plutôt un pb dans la façon de récupérer cet ID avec
ADODB).

--
Patrice

"Marcus"
ok pour SCOPE_IDENTITY.
Mais le meme probleme survient avec un recordset ADO.
C'est a dire que apres un insert dans une table, l'identifiant retourné
dans
l'ADODB recordset est incorrect...

"Patrice" a écrit :

Cf SCOPE_IDNEITY dans la doc. Extrait :

SCOPE_IDENTITY et @@IDENTITY renvoient les dernières valeurs d'identité
générées dans une table de la session active. Toutefois, SCOPE_IDENTITY
renvoie les valeurs insérées uniquement dans l'étendue actuelle.
@@IDENTITY
n'est pas limitée à une étendue spécifique.

---
Patrice


"Larigue" news:
> Bonjour.
>
> Nous utilisons SQL SERVER 2005 SP2 pour une réplication de fusion entre
> 2
> tables identiques coté editeur et coté abonné.
>
> Cette table a une colonne identité (avec not for réplication)
>
> Le problème est le suivant :
> Aprés l'aplication de la capture instantanée, nous inserons des lignes
> coté
> Abonné
> puis procédons à la synchronisation. tout va bien, les nouvelles lignes
> sont
> insérées coté Editeur.
> Maintenant lorsque l'on insère une nouvelle ligne coté abonné, la ligne
> est
> insérée avec un nouvel identifiant correct, MAIS la fonction @@IDENTITY
> retourne une valeur d'identifiant incohérente.
> Et nous avons besoin de cette valeur afin d'insérer d'autres lignes
> relationelles dans une autre table avec cette nouvelle valeur
> d'identifiant.
> Nous sommes donc bloqués.
> Quelqu'un aurait-il une idée ?
> Merci







Publicité
Poster une réponse
Anonyme