| name | syncing-diva-sql |
| description | Synchronise la base SQL Server a partir des dictionnaires compiles via xwin7 synchroauto. Parse le rapport de synchronisation et presente les erreurs. A utiliser apres une compilation buildall reussie (0 erreur) pour mettre a jour la base SQL.
|
syncing-diva-sql
Contenu
- Utilisation rapide
- Workflow complet (3 etapes)
- Parsing du rapport
- Apercu (dry-run) et delta de schema
- Scripts disponibles
- References
Utilisation rapide
Lancer une synchronisation
# IMPORTANT : le working directory doit etre C:\divalto\sys
$SavedDir = Get-Location
Set-Location "C:\divalto\sys"
C:\divalto\sys\xwin7.exe -action synchroauto `
-project "C:\...\projet\divalto achat-vente.dhpt" `
-profile "développement" `
-output "C:\...\Log\Synchro.txt" `
-outputall | Out-Null
Set-Location $SavedDir
Prerequis critique : compilation buildall avec 0 erreur sur le meme projet/profil. Sans cela, les objets compiles sont incoherents → synchro invalide.
Parser le rapport
py .claude/skills/syncing-diva-sql/scripts/parse_synchro.py \
--path "C:/chemin/Log/Synchro.txt"
Workflow complet
Etape 1 -- Verifier les prerequis
Avant synchronisation :
- Compilation buildall reussie :
Erreur(s)=0 dans le rapport buildall (voir compiling-diva-projects)
- Working directory :
C:\divalto\sys (sinon erreur code 3)
- Meme projet et profil que le buildall precedent
- Fichier .dhpt valide (voir managing-diva-projects)
- Script .ps1 en ISO-8859-1 si profil avec accent
Etape 2 -- Synchroniser
$SavedDir = Get-Location
Set-Location "C:\divalto\sys"
xwin7 -action synchroauto `
-project $Projet -profile $Profil `
-output $LogSynchro -outputall | Out-Null
Set-Location $SavedDir
Avec environnement (deux commandes separees) :
Set-Location "C:\divalto\sys"
xwin7 -select_environment $Environnement -outputall | Out-Null
xwin7 -action synchroauto -project $Projet -profile $Profil -output $LogSynchro -outputall | Out-Null
Etape 3 -- Analyser le rapport
py .claude/skills/syncing-diva-sql/scripts/parse_synchro.py \
--path "chemin/rapport.txt"
Si success: true → synchronisation SQL reussie, base a jour.
Si success: false → corriger les erreurs et relancer.
Parsing du rapport
Marqueur de resultat
Le rapport de synchronisation utilise le marqueur [TOTAL_ERRORS]N :
[TOTAL_ERRORS]0
| Valeur | Signification |
|---|
[TOTAL_ERRORS]0 | Synchronisation reussie |
[TOTAL_ERRORS]N (N > 0) | N erreurs de synchronisation |
Attention : ce format est different de buildall qui utilise Erreur(s)=N.
Erreurs dans le rapport
Les erreurs de synchronisation apparaissent dans le corps du rapport avant la ligne [TOTAL_ERRORS]. Le script parse_synchro.py extrait :
- Le nombre total d'erreurs
- Les lignes d'erreur avec contexte
Apercu (dry-run) et delta de schema
Il n'existe pas de dry-run natif via xwin7 -action synchroauto (pas d'action
synchroscript, pas d'option -noexec). Apres un buildall complet, toutes les
tables du projet sont candidates a la synchro -- ce qui peut inquieter avant
d'appliquer.
Un apercu est toutefois possible par programmation (mecanisme ModeAudit de la
synchro-par-programme) -- voir la doc Divalto « Synchronisation du schema de la
base par programmation ». Si le besoin d'apercu devient recurrent, envisager un
petit programme Divalto dedie utilisant ModeAudit.
A defaut, verifier le delta a posteriori : la synchro produit un vrai delta
(ALTER TABLE ADD/DROP COLUMN, CREATE/DROP INDEX...), pas un DROP+CREATE en bloc
(sauf table neuve). Le rapport d'audit (Synchro.txt, ou DhOdbcConfigSql.log /
DhOdbcConfigSqlScript.sql sous C:\divalto\DivaltoLog) liste ce delta. Pour en
obtenir un resume par table :
py .claude/skills/syncing-diva-sql/scripts/parse_synchro.py \
--path "C:/divalto/DivaltoLog/DhOdbcConfigSqlScript.sql" --changes
Sortie : {changes: {tables_modified, tables:[{table, add_columns, drop_columns, create_index, drop_index, created, dropped}], procedures, functions}}. Le bruit est filtre (tables *_oldcolumns de sauvegarde, INSERT, sp_addextendedproperty, drop-constraint). Les procedures ERASE_* (truncate) sont regenerees a chaque synchro -- listees a part, ce ne sont pas des changements de schema.
Scripts disponibles
| Script | Role | Entree | Sortie |
|---|
parse_synchro.py | Parse rapport synchroauto | --path fichier.txt | JSON (success, total_errors, errors) |
parse_synchro.py --changes | Delta de schema par table (substitut d'apercu) | --path fichier.txt|.log|.sql | JSON (changes: tables[], procedures, functions) |
Exit codes : 0 = synchronisation reussie (ou --changes extrait), 1 = erreurs trouvees, 2 = rapport illisible.
References