Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.
Toon posts:

[SQL2005] Database replicatie vraag

Pagina: 1
Acties:

Verwijderd

Topicstarter
Mensen,

Ik loop tegen een vraagstuk aan waar ik na menig zoekfunctie te hebben gebruikt nog niet achter kan komen wat de oplossing is.

Situatie:
In heel Nederland bevinden zich SQL 2005 Server-machines met daarop een database.
Deze database heeft verschillende tabellen en van deze tabellen zijn er een aantal gegevens van belang voor de replicatie. Deze machines zijn de Publishers.

Het aanmaken van de publish en subcription is geen probleem, echter wel het volgende.
De tabel (article) welke wordt gepublishd, bevat een uniek volgnummer.
Maar op het moment dat al deze databases van verschillende kanten wordt gepublished heb ik niets meer aan dit volgnummer want publisher A maakt gebruik van volgnummer vanaf 1 t/m 100.000.000 en publisher B ook. Zodoende kan de subcriber er alsnog niets mee.

Nu wil ik aan iedere publicatie een identificerende code meegeven van de publisher(klantnummer) zodat ik naast het unique id de primary key kan zetten op "klantnummer(identificatiecode publisher)+ uniek volgnummer".
Nu alleen de vraag hoe ik dit veld tijdens de replicatie kan opnemen?
Ik wil namelijk niet in de lokale tabel nog een veld opnemen met overal hetzefde nummer want de tabel is al inmens groot (transactie tabellen).
Er is een optie bij transactional publication with updatable subcriptions om een unique id mee te geven, maar met dit ID kan ik helemaal niets (aan de subscription kant).

De tabellen (articles)
Publisher
Volgnummer|Datum|Tijd|Filiaal|Artikel|EANCode|Aantal etc

Gewenst aan de kant van subcriber:
Klantnummer|Volgnummer|Datum|Tijd|Filiaal|Artikel|EANCode|Aantal etc


Ik hoop dat ik het helder heb uitgelegd en dat er iemand mij kan helpen.
En mocht het niet duidelijk zijn dan zal ik proberen aan te vullen :-)


Alvast mijn dank!


GR. Niels

  • dvvelzen
  • Registratie: Februari 2002
  • Laatst online: 07-08 19:20
Ik snap niet helemaal wat je nou wilt met een code opnemen maar toch geen kolom toevoegen dus ik spuw maar mijn persoonlijke ervaringen wat betreft replicatie:

1. Eigen ranges:
Elke server (cell) krijgt een eigen id range die die mag gebruiken:
Cell 1: 1 - 1000.000
Cell 2: 1.000.001 - 2.000.000
Cell 3: 2.000.001 - 3.000.000
etc...

2. Remote proc call replicatie (Syb RS).
Mutaties gebeuren adhv locatie. Lokaal roep je de procedures aan. Echter roep je dit in regio A aan voor een klant met als basis regio B dan gebeurd er niks in je huidige server. Alleen wordt de call gerepliceerd naar regio B. Deze wordt dan daar uitgevoerd en de modificaties worden dan weer met de normale replicatie teruggestuurd. Op deze manier heeft elke klant een "eigen" volgnummering.


3. Proc replicatie.
Puur en alleen de call repliceren zodat deze overal op zich wordt uitgevoerd.

misschien dat je er iets aan hebt.

[ Voor 5% gewijzigd door dvvelzen op 07-10-2008 11:12 ]


Verwijderd

Topicstarter
Ja ik bedoel meer dat ik de lokale databases niet wil voorzien van een klantnummer in de transactietabel.
Echter wil ik dat wel bij de subscriber.

De tabel bij de publisher ziet er dus nu zo uit " Volgnummer|Datum|Tijd|Filiaal|Artikel|EANCode|Aantal etc"
Als ik daar een Klantnummer bij opneem ben ik er in feite, maar dan bevat ELK record ook nog eens een klantnummer, dus nog meer data. (initiele snapshot zijn ongeveer 6.000.000 records, daar een veld aan toevoegen..). Bij de publisher is het volgnummer de primary key.

De ranges zouden een oplossing kunnen zijn maar wat gebeurt er als de 1.000.000 is bereikt ?


Iig tnx voor meedenken :-)

[Edit]

Deze verschillende databases bevatten dus allemaal verschillende data.... We willen eigenlijk warehousen vanuit heel Nederland in 1 centrale database. Dus publishen vanuit de klant naar ons centrale systeem (subcriber).

[ Voor 15% gewijzigd door Verwijderd op 07-10-2008 11:18 ]


  • dvvelzen
  • Registratie: Februari 2002
  • Laatst online: 07-08 19:20
Sorry dan kan ik je niet helpen het enige hoe ik het ken vanuit Sybase Replication Server:

Log record wordt gelezen:
1. vind een sproc call
of
2. vind een insert/update/delete image.

die image van punt 2, bevat van elk record de "inserted" en "deleted" state als te gebruiken in een trigger.

dit wordt verstuurd.

----

de ontvangende kant kan op basis van alle inserted, deleted waarden simpel de ontvangende tabel bijwerken OF door middel van "replication definitions" een stuk vaste sql uitvoeren (evt met deze inserted en deleted waarden).

----

Echter nooit zal de versturende kant meer sturen dan de "proc call" of de "inserted/deleted" state.

Sorry & misschien kan iemand anders je verder helpen.

Dennis

Verwijderd

Topicstarter
Dennis, ik hoop het.

In ieder geval bedankt voor je antwoorden!

Gr. Niels