|
FOROS PROFESIONALES WINDEV, WEBDEV y WINDEV Mobile |
| | | | | |
| [WD14] Pb réplication avec SQL Server si clé uniqueidentifier |
| Iniciado por dominique.ferrand, 09,abr. 2009 02:30 - 3 respuestas |
| |
| | | |
|
| |
| Publicado el 09,abril 2009 - 02:30 |
Bonjour, j'ai besoin de mettre en place une réplication entre une base centrale existante au format SQL Server et une application windev qui doit attaquer une base locale HF en mode déconnecté.
J'utilise la réplication universelle. Je galère pour la mise en place. Je pense avoir isolé le problème qui réside dans l'utilisation du type de clé primaire utilisé : 'uniqueidentifier'.
En effet, quand je synchronise avec une table dont la clé unique est numérique tout fonctionne correctement.
Si je synchronise avec une table dont la clé unique est de type 'uniqueidentifier' (ça donne des clé du type d1988cc1-132f-41c2-bdc2-c243fa498d2e) les données passent bien dans le sens SQL -> HF (1ère synchro d'initialisation et mises à jour suivantes), mais si je modifie en HF et que je synchronise de nouveau, je vais avoir un message d'erreur à ralonge (copier ci-après...)
Je n'ai trouvé que 2 posts sur ce sujet (en 2004 et 2006) et sans réponses. Je suis surpris... Personne n'utilise SQL Server ? ou pas avec ce type de clés ?
La question suivante sera : quid de la création de nouveaux enregistrements dans la base HF pour donner des valeurs à cette clé unique....
------------------------------------------------------ Erreur pendant la synchronisation du réplica. Erreur d'intégrité lors de l'ajout/modification dans le fichier <P_TECH>. Erreur (intégrité) de l'accès OLE DB. Numéro d'erreur = 170159 [...] ump de l'erreur du module <WD140HF.DLL> <14.00Exb>.
- Niveau : erreur non fatale (EL_ONRETURN)
- Code erreur : 70015
- Code erreur WD55 : 15
- Pas de code d'erreur système
- Message d'erreur système : Description = Violation de la contrainte PRIMARY KEY 'ID_TECHNICIEN_P_TECH'. Impossible d'insérer une clé en double dans l'objet 'P_TECH'. Source = Microsoft OLE DB Provider for SQL Server SQL State = 23000
------------------------------------------------------------- Je précise bien que je suis en modification d'un enregistrement existant, pas en ajout. De plus j'ai bien créé et mis à jour la rubrique de type DateHeure pour la synchro et précisé cette rubrique dans la description de la réplication. |
| |
| |
| | | |
|
| | |
| |
| Publicado el 09,abril 2009 - 17:14 |
Bonjour Dominique...
je ne sais pas pour la réplication, mais les clés en questions sont des GUID (globally unique identifier) que tu peux générer par des API.
Cordialement
-- Fabrice Harari Consultant WinDev, WebDev et WinDev Mobile International
Plus d'information sur http://fabriceharari.com/index_FR.html
Dominique Ferrand wrote:
Bonjour, j'ai besoin de mettre en place une réplication entre une base centrale existante au format SQL Server et une application windev qui doit attaquer une base locale HF en mode déconnecté.
J'utilise la réplication universelle. Je galère pour la mise en place. Je pense avoir isolé le problème qui réside dans l'utilisation du type de clé primaire utilisé : 'uniqueidentifier'.
En effet, quand je synchronise avec une table dont la clé unique est numérique tout fonctionne correctement.
Si je synchronise avec une table dont la clé unique est de type 'uniqueidentifier' (ça donne des clé du type d1988cc1-132f-41c2-bdc2-c243fa498d2e) les données passent bien dans le sens SQL -> HF (1ère synchro d'initialisation et mises à jour suivantes), mais si je modifie en HF et que je synchronise de nouveau, je vais avoir un message d'erreur à ralonge (copier ci-après...)
Je n'ai trouvé que 2 posts sur ce sujet (en 2004 et 2006) et sans réponses. Je suis surpris... Personne n'utilise SQL Server ? ou pas avec ce type de clés ?
La question suivante sera : quid de la création de nouveaux enregistrements dans la base HF pour donner des valeurs à cette clé unique....
------------------------------------------------------ Erreur pendant la synchronisation du réplica. Erreur d'intégrité lors de l'ajout/modification dans le fichier <P_TECH>. Erreur (intégrité) de l'accès OLE DB. Numéro d'erreur = 170159 [...] ump de l'erreur du module <WD140HF.DLL> <14.00Exb>.
- Niveau : erreur non fatale (EL_ONRETURN)
- Code erreur : 70015
- Code erreur WD55 : 15
- Pas de code d'erreur système
- Message d'erreur système : Description = Violation de la contrainte PRIMARY KEY 'ID_TECHNICIEN_P_TECH'. Impossible d'insérer une clé en double dans l'objet 'P_TECH'. Source = Microsoft OLE DB Provider for SQL Server SQL State = 23000
------------------------------------------------------------- Je précise bien que je suis en modification d'un enregistrement existant, pas en ajout. De plus j'ai bien créé et mis à jour la rubrique de type DateHeure pour la synchro et précisé cette rubrique dans la description de la réplication.
|
| |
| |
| | | |
|
| | |
| |
| Publicado el 09,abril 2009 - 19:33 |
Merci pour l'information - j'ai pu la mettre en oeuvre pour les ajouts.
Dans l'état actuel de mes recherches : - les créations et modifications réalisées sur le SQL server sont bien répliquées vers la base HyperFile - les créations réaliées sur la base HyperFile remontent bien sur SQL Server (grace à l'info de Fabrice)
Le problème restant est que la modification d'un enregistrement réalisé sur la base HF ne remonte pas sur SQL Server malgré l'information DateHeure convenablement renseignée. Dans le meilleur des cas il ne se passe rien ; dans le pire des cas, il essaie de créer un doublon sur la clé contenant le GUID...
D'autres idées ?
Dominique Ferrand
Fabrice Harari a écrit dans le message de news <49ddf3aa$1@news.pcsoft.fr> :
Bonjour Dominique...
je ne sais pas pour la réplication, mais les clés en questions sont des GUID (globally unique identifier) que tu peux générer par des API.
Cordialement
|
| |
| |
| | | |
|
| | |
| |
Miembro registrado 44 mensajes |
|
| Publicado el 19,febrero 2020 - 14:05 |
Bonjour Dominique Je suis dans la même galère que toi ... sauf que j'ai une base Postgres au lieu d'une base SQL Server Mes identifiant son du type UUID exemple : 3150b11e-516c-11ea-a74b-4bca004b552d
Quand l'initialise la première fois, je n'ai qu'une seule ligne qui se crée et l'identifiant côté HFSQL Classic est à 0000000000 J'ai utilise ReplicEdit pour créer mon fichier wer et comme toi 'ai bien créé et mis à jour la rubrique de type DateHeure pour la synchro et précisé cette rubrique dans la description de la réplication. peux tu me montrer ton code d'initialisation de la réplication ? Merci |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|