SQL replicatie tussen Standard en Express
Momenteel ben ik bezig met een project waarbij ik heb gekozen om gebruik te gaan maken van SQL replicatie tussen een SQL Server 2005 Standard en een SQL Server 2005 Express editie. Door gebruik te maken van de standaard replicatie methoden hoef ik zelf geen applicatie meer te maken welke eigenlijk precies hetzelfde doet, namelijk tabellen, stored procedures en functies synchroniseren tussen 2 databases.
Het opzetten van een Publication en Subscription is helemaal niet lastig. Microsoft heeft het systeem zo opgebouwd dat je eigenlijk alleen maar de wizard hoeft te volgen. Het enige waar je echt bij na hoeft te denken is welke tabellen, stored procedures en functies je wilt gaan repliceren.
Zodra je de publicatie klaar hebt kun je de client gaan opzetten, hier moet een Subscription worden gemaakt. Dit is eigenlijk ook niet veel lastiger dan de wizard te volgen. Waar wel op gelet moet worden is dat je de Publication Server benoemd met z’n echte naam, dus niet IP-adres.
Je krijgt ook niet echt de kans om het wel op IP-adres te doen, want dan volgt er gewoon een foutmelding. Nadat je de publicatie en het abonnement hebt ben je klaar, nou ja, dat verwacht je. Op een normale SQL Server omgeving is dit inderdaad het geval, ware het niet dat je nu met SQL Server Express te maken hebt en die niet echt normaal is. In Express zit namelijk geen SQL Agent, waardoor de database niet zelf in de gaten houdt of er een update klaar zou kunnen staan. Gelukkig kwam ik na even zoeken achter de oplossing op de MSDN website.
Blijkbaar is er iets als de Windows Synchronization Manager. Ik had er nog nooit van gehoord, maar het zit echt in Windows. Na even zoeken wist ik ook waar precies, namelijk onder Bureau-accessoires met de naam Synchroniseren, hoe toepasselijk. Start dit op en je ziet een scherm dat vergelijkbaar is als hier beneden. Vink hier het vinkje aan dat hoort bij je SQL abonnement en druk dan op Synchroniseren.
Nu moet nog het account worden ingevuld dat toegang heeft tot de database, zodat de connectie echt kan worden opgesteld. Zelf vind ik het wel fijn om hier een SQL-account voor te gebruiken. Het komt natuurlijk geregeld voor dat het Windows account niet bekend is op de server.
Als alles goed gaat krijg je een voortgang scherm te zien met hoe ver je synchronisatie is.
Het komt trouwens wel heel precies met wat je doet. Zo heb ik even zitten stoeien met rechten op de map ReplData en rechten op de database. Als dit namelijk niet allemaal goed klopt, dan krijg je hele vage, nietzseggende, meldingen en daar kun je dus weinig mee. Al met al is replicatie prima aan de gang te krijgen met SQL Express, maar je moet er wel wat meer moeite voor doen dan bij een betaalde versie. Naar mijn weten zijn trouwens alleen pull-subscriptions mogelijk met Express, dit omdat je het proces dus handmatig moet starten.