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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Patrice
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" a écrit dans le message de 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
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" <Larigue@discussions.microsoft.com> a écrit dans le message de
news: 506B244D-5A81-4EB2-86D0-34C48EEA87BC@microsoft.com...
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
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" a écrit dans le message de 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
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" a écrit dans le message de 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
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" <Larigue@discussions.microsoft.com> a écrit dans le message de
news: 506B244D-5A81-4EB2-86D0-34C48EEA87BC@microsoft.com...
> 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
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" a écrit dans le message de 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
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" a écrit dans le message de news:
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" a écrit dans le message de 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
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" <Marcus@discussions.microsoft.com> a écrit dans le message de news:
5A8AED9D-0680-4754-9897-5C9F61E7F666@microsoft.com...
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" <Larigue@discussions.microsoft.com> a écrit dans le message de
news: 506B244D-5A81-4EB2-86D0-34C48EEA87BC@microsoft.com...
> 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
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" a écrit dans le message de news:
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" a écrit dans le message de 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