\


 Tuesday, 11 May 2004
Zkrocení zlé ženy - "Merge" replikace na MSSQL aneb co v MSDN nenaleznete

"Merge" replikace v MSSQL se používá hlavně tehdy, když má více uživatelů paralelně pořizovat data v odpojeném (offline) režimu. Bonbónkem je u "merge" replikace podpora mobilních klientů (PDA). Uživatelé se připojí, pořízená data odreplikují na server a server jim na oplátku doručí změny v datech provedené ostatními uživateli. Typickými kandidáty na integraci "merge" replikace do designu aplikace jsou systémy pro podporu obchodních zástupců v terénu. Proč se psát s vlastní komponentou pro replikaci, když je zde komponenta již dostatečně otestovaná Microsoftem na nezanedbatelném množství pokusných králíků.:) . Provoz systému s replikacemi ale přesto není triviální, protože se po čase začnou objevovat problémy, jejichž řešení po mobilním telefonu s obchodním zástupcem vyžaduje velkou dávku sebezapření a neustálého sebeujišťování, že si právě teď zasluhujete plat, takže není žádoucí mezi zuby procedit jadrné hodnocení ohledně intelektální potence protějšku, s nímž právě hovoříte.
Proto jsem pro replikace napsal manažera replikaci, jenž je natolik inteligentní, že uživatele většinou ignoruje a jen občas mu dovolí kliknout na nějaké tlačítko :) Na co byste tedy při návrhu vlastního manažera replikací neměli zapomenout?

Ještě upozorňuji, že tato doporučení se týkají hlavně mně důvěrně známé konfigurace, kdy uživatelé přistupují přes VPN k MSSQL serveru s publikací a na svém počítači jsou přihlášení pod lokálním (ne doménovým) účtem. Uživatelé mají na svém počítači databázi MSDE 2000.

1) Ověření dostupnosti lokálního databázového serveru.


2) Kontrola existence lokální databáze, do níž jsou replikována data.


3) Manažer má v rozhraní metody pro založení a zrušení lokální databáze. V konfiguračním souboru je cesta k souborům se skripty pro zrušení a založení databáze.


4) Ověření dostupnosti serveru (počítače) s replikacemi - "Ping".


5) Zjištění, že na serveru běží MSSQL. Prakticky se jedná o ověření, že se lze připojit na port, na němž "poslouchá" MSSQL (standardně se jedná o port 1433).


6) Manažer musí umět založit novou "subscription". "Subscription" je aktivní relace mezi jedním klientem replikace a MSSQL. Na "subscription" je navázána kompletní historie provedených replikací a prohlédnout si ji můžete v Enterprise Manageru. Po uplynutí nastaveného intervalu neaktivity replikace jsou "subscription" na serveru vymazány. Když obchodní zástupce odjede na čtrnáctidenní dovolenou, tak za existenci této metody si můžete dát pořádného panáka Four Roses. Lépe dva:)


7) Komplementární k metodě pro založení "subscription" je pochopitelně metoda pro zrušení staré "subscription".


8) Reinicializace "subscription" bez ztráty existujících lokálních dat. Například při podezření na neúplné schéma databáze u klienta je nutné znovu doručit inicializační snapshot se schématem. Je zbytečné zakládat novou "subscription", postačí reinicializace stávající.


9) Ověření dostupnosti složek, ve kterých je uložen snapshot. Inicializační snapshot musí být před zahájením replikace dostupný. Ověření dostupnosti složek probíhá až po impersonaci uživatele (viz bod 11).


10) Ověření dostupnosti pracovní složky na lokálním počítači, ve které je rozbalován snapshot. Ověření dostupnosti složky probíhá opět až po impersonaci uživatele (viz bod 11).


11) Impersonace speciálního uživatele, který má doménový účet v síti s MSSQL serverem, na němž je vytvořena publikace. Účet má přístup jen k složkám se snapshoty a k lokálnímu pracovnímu adresáři replikace. Celá replikace běží pod tímto speciálním účtem. Impersonaci nemůžete provádět na počítačích, na kterých jsou nainstalovány operační systémy Windows 98 nebo ME.


12) A samozřejmě musíte mít metodu pro spuštění replikace.

A na konec. Měli byste zájem o nějaký podrobný tutorial o vytváření replikací?



Tuesday, 11 May 2004 21:41:00 (Central Europe Standard Time, UTC+01:00)       
Comments [9]  .NET Framework | (MS)SQL tipy a triky


Tuesday, 19 July 2005 11:01:59 (Central Europe Standard Time, UTC+01:00)
Jestli to s tim manualem myslite vazne tak sem s nim :)
Jinak velmi zajimave cteni. Dekuji.
Tuesday, 19 July 2005 11:02:00 (Central Europe Standard Time, UTC+01:00)
To by bylo vazne skvele, protoze off-line klienti jsou potreba kazdou chvili a vyuziti MSSQL - MSDE by to urcite dost ulehcilo. Taky dekuji.
Tuesday, 19 July 2005 11:02:00 (Central Europe Standard Time, UTC+01:00)
Urcite to vazne myslim, jinak bych sem nic takoveho nepsal:) Jeste se jen dohodnu, jestli tutorial vyjde na nejakem jinem periodiku nebo na weblogu.
Tuesday, 19 July 2005 11:02:00 (Central Europe Standard Time, UTC+01:00)
Za par tydnu tohle budu muset take resit, takze bych manual take privital ... Sam se z toho uz ted desim!
Tuesday, 19 July 2005 11:02:00 (Central Europe Standard Time, UTC+01:00)
Jen by me jeste zajimala jedna vec. Jak resite zmenu publikace? Myslim tim, kdyz se na databazi SQL Serveru zmeni tabulka nebo se prida nova. Resi to take vas manazer nebo to resi spravce SQL Serveru?
Tuesday, 19 July 2005 11:02:00 (Central Europe Standard Time, UTC+01:00)
Pres VPN se pripojime na server, provedeme zmeny, na serveru vygenerujeme znovu snapshot a reinicializujeme vsechny subscription s uploadem zmen.
Tuesday, 19 July 2005 11:02:00 (Central Europe Standard Time, UTC+01:00)
Jen par detailu:
1.Subscription muze byt i anonymni, takze neni potreba ji dobredu vytvaret.
2.Vami zminovana vlastnost, ze se subscription pri necinnosti maze lze taky vypnout, resp. lze nastavit nekonecnou zivotnost subscription.
Tuesday, 19 July 2005 11:02:00 (Central Europe Standard Time, UTC+01:00)
1) Td je pravda. K vytvoreni subscription pak dojde po zalozeni' Manazer by ale tuto metodu mel obsahovat, aby ihned po zruseni stare subscription mohla byt byt vytvorena nova. Nerad nechavam tyto zalezitosti na „potom":)
2) Ano, mate na mysli ...
Tuesday, 19 July 2005 11:02:00 (Central Europe Standard Time, UTC+01:00)
Ja bych napovedu uvital. S replikacema se hrdinne potykam uz nejakou dobu, vyskolil jsem nekolik varek systemovych adminu, ovsem spousta veci mi porad unika. :)

Zvlaste mi unika proc jsou nektere veci nedeterministicke, proc musim casto mazat ...
Comments are closed.