Goedemiddag,
Ik zit met het volgende:
Al enige tijd draait er een replicatie tussen twee databases.
In den beginne waren er nogal wat problemen met verdwijnende records, deze problemen werden stuk voor stuk opgelost.
Het betreft trouwens een merge replication.
- Primary keys op not for replication gezet
- Ranges ingesteld
- DTS job aangepast zodat de NULL values tenminste ook werden overgebliept bij initialisatie van de data
- Triggers aan lopen passen zodat deze ook geen roet in het eten gingen gooien tijdens replicatie.
Afijn, denk je eindelijk klaar te zijn met alle ellende op te lossen........ strompel ik per toeval achter de reden waarom er toch nog steeds wat gegevens pleite gaan:
foreign key constraints!
Alleen, nu draait de replicatie dus al, dus wordt het wat ellendiger om de tabel schema's aan te passen.
Goed, heb ondertussen al een heel script in mekaar gebakken om de offending foreign key constraints te droppen en weer toe te voegen aan die tabellen die gepubliceerd worden, maar zit ik met het volgende:
Wat is de beste manier om die schema changes te doen, die het minste impact heeft op het productie systeem?
Ik heb al wel wat ideeën, maar ben er niet echt blij mee:
1) Subscription deleten, publication deleten, script met alter table statements draaien, publication maken, subscription maken, snapshot over ftp'n en gaan met die banaan.
Nadeel: bewerkelijk, en ik ben m'n tussen liggende merge data kwijt (aangezien ik bij de subscription zeg dat ik alle data al heb staan op de subscriber kant... de snapshot is vrij nutteloos zeg maar afgezien dan voor schema changes zoals extra kolommen aan tabellen over bliepen).
2) Gewoon de alter statements draaien en hopen dat ze terecht komen in de snapshot, de snapshot over bliepen en hopen dat het op de subscriber komt.
Nadeel: groot gapend gat van vragen.
Voordeel: niet zo bewerkelijk
3) Subscription stoppen, alle articles uit de publicatie halen, alter statements draaien, articles weer toevoegen aan de publicatie, re-init met datachanges terug laten voeren op de publisher...... en gaan.
Tja, goed, heb natuurlijk niet alle ideetjes even goed beschreven (enkele "stappen" niet beschreven... zoals re-init met datachanges zoals ik wel bij stap 3 heb gedaan.)
Maar goed, wie heeft dit al eens eerder moeten doen, en wat waren de genomen stappen?
Re-cap: Draaiende replicatie, waarbij nu dus naderhand constraints aangepast moeten worden naar "not for replication" omdat de volgorde van binnenkomst zorgde voor conflicten....... en dus deleted records (en boze medewerkers omdat ze weer eens wat gegevens kwijt waren).
Ik zit met het volgende:
Al enige tijd draait er een replicatie tussen twee databases.
In den beginne waren er nogal wat problemen met verdwijnende records, deze problemen werden stuk voor stuk opgelost.
Het betreft trouwens een merge replication.
- Primary keys op not for replication gezet
- Ranges ingesteld
- DTS job aangepast zodat de NULL values tenminste ook werden overgebliept bij initialisatie van de data
- Triggers aan lopen passen zodat deze ook geen roet in het eten gingen gooien tijdens replicatie.
Afijn, denk je eindelijk klaar te zijn met alle ellende op te lossen........ strompel ik per toeval achter de reden waarom er toch nog steeds wat gegevens pleite gaan:
foreign key constraints!
Alleen, nu draait de replicatie dus al, dus wordt het wat ellendiger om de tabel schema's aan te passen.
Goed, heb ondertussen al een heel script in mekaar gebakken om de offending foreign key constraints te droppen en weer toe te voegen aan die tabellen die gepubliceerd worden, maar zit ik met het volgende:
Wat is de beste manier om die schema changes te doen, die het minste impact heeft op het productie systeem?
Ik heb al wel wat ideeën, maar ben er niet echt blij mee:
1) Subscription deleten, publication deleten, script met alter table statements draaien, publication maken, subscription maken, snapshot over ftp'n en gaan met die banaan.
Nadeel: bewerkelijk, en ik ben m'n tussen liggende merge data kwijt (aangezien ik bij de subscription zeg dat ik alle data al heb staan op de subscriber kant... de snapshot is vrij nutteloos zeg maar afgezien dan voor schema changes zoals extra kolommen aan tabellen over bliepen).
2) Gewoon de alter statements draaien en hopen dat ze terecht komen in de snapshot, de snapshot over bliepen en hopen dat het op de subscriber komt.
Nadeel: groot gapend gat van vragen.
Voordeel: niet zo bewerkelijk
3) Subscription stoppen, alle articles uit de publicatie halen, alter statements draaien, articles weer toevoegen aan de publicatie, re-init met datachanges terug laten voeren op de publisher...... en gaan.
Tja, goed, heb natuurlijk niet alle ideetjes even goed beschreven (enkele "stappen" niet beschreven... zoals re-init met datachanges zoals ik wel bij stap 3 heb gedaan.)
Maar goed, wie heeft dit al eens eerder moeten doen, en wat waren de genomen stappen?
Re-cap: Draaiende replicatie, waarbij nu dus naderhand constraints aangepast moeten worden naar "not for replication" omdat de volgorde van binnenkomst zorgde voor conflicten....... en dus deleted records (en boze medewerkers omdat ze weer eens wat gegevens kwijt waren).