SQL 2005 replicatie via https

SQL 2005 is best een goede database serverapplicatie; zeker nog niet zover als een Oracle bak, maar Microsoft is wel op weg… Zeker als je denkt aan de integratie van het .Net Framework. Maar goed dat is een hele andere discussie 😉

Sinds een tijd wilde ik onze versioning SQL database gaan repliceren naar een andere, fysiek gescheiden, omgeving. Het liefste wilde ik dit natuurlijk via https doen, aangezien een vpn verbinding tussen twee verschillende omgeving niet echt de meest award winning oplossing is…

Sinds SQL 2005 is https replicatie mogelijk. Wat er gebeurd is dat je op de ‘orginele’ database server een ‘Local Publication’ moet aanmaken op basis van een ‘Merge publication’, dan is het mogelijk om de publicatie te synchronizeren met een website. Voordat je de publicatie naar de website kan schrijven is het allereerst noodzakelijk de synchronisatie website aan te maken. Dit kan door middel van de ‘Configure Web Synchronization Wizard’. Deze wizard creëert de website in de desbetreffende context binnen inetmgr (IIS manager), ook plaatst de wizard een dll genaamd ‘replisapi.dll’ in de website. Dit is een ASP.NET web service applicatie; beter gezegd een broker tussen de push en pull SQL servers.

Wanneer de publicatie en de website gereed zijn dient gecontroleerd te worden of de website benaderd kan worden: hiervoor dien je de volgende URL te gebruiker: https://sub.site/directory/replisapi.dll?diag

sql

De volgende pagina moet zichtbaar worden (gebruik in ieder geval een origineel certificaat en ‘Basic authentication’).

Let vooral op de SUCCESS meldingen, deze moeten vanzelfsprekend succesvol zijn, zo niet werkt het niet 🙂

 

 

 

 

Ok, nu moet de andere SQL server natuurlijk nog de Database gaan binnentrekken: ‘Pull subscription’. Allereerst moet de distributie geconfigureerd worden (‘Configure distribution’).

Wanneer dit gereed is dient de volgende T-SQL code uitgevoerd te worden:

DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @websyncurl AS sysname;
DECLARE @security_mode AS int;
DECLARE @login AS sysname;
DECLARE @password AS nvarchar(512);
DECLARE @login1 AS sysname;
DECLARE @password1 AS nvarchar(512);

SET @publication = N’publication-name-publisher‘;
SET @publisher = ‘sql-servername-publisher‘;
SET @publicationDB = N’databasename-publisher‘;
SET @websyncurl = ‘https://sub.site/directory‘;
SET @security_mode = 0; — Basic Authentication for IIS
SET @loginJob = N’domainusername‘;
SET @passwordJob = ‘password‘;
SET @loginWeb = N’domainusername’;
SET @passwordWeb = ‘password‘;

EXEC sp_addmergepullsubscription
    @publisher = @publisher,
    @publication = @publication,
    @publisher_db = @publicationDB,
    @subscriber_type = N’anonymous’;

EXEC sp_addmergepullsubscription_agent
    @publisher = @publisher,
    @publisher_db = @publicationDB,
    @publication = @publication,
    @distributor = @publisher,
    @job_login = @loginJob,
    @job_password = @passwordJob ,
    @use_web_sync = 1,
    @internet_security_mode = @security_mode,
    @internet_url = @websyncurl,
    @internet_login = @loginWeb,
    @internet_password = @passwordWeb;

GO

Na deze actie zijn we gereed; de ‘Local subscription’ is klaar voor gebruik. Forceer de replicatie door met de rechtermuisknop op de subscription te klikken en te kiezen voor ‘View Synchronization Status’ en daarna voor Start te kiezen. De status kan bekeken worden door voor ‘View Job History’ te kiezen. Lees in dit artikel de ins-en-outs met betrekking tot het synchroniseren van een database via het web.

Happy replicating…

Daniel
http://www.pepperbyte.com