SQL Server 2005 or Later Database Mirroring Step-By-step Guide
SQL Server 2005 or Later Database Mirroring Step-By-step Guide
Step 3: Create login, user and associate certificate with user on Principal Instance
/* * Execute this against the Principal Instance. The Mirror_Cert.cer * needs to be copied on the Principal Server. */ USE MASTER GO /* * We are creating a SQL Login here. For Windows logins, * use the Grant Login instead of Create Login */ IF EXISTS ( SELECT * FROM sys.syslogins WHERE name LIKE '%MIRROR_login%') DROP LOGIN MIRROR_login; GO IF EXISTS ( SELECT * FROM sys.sysusers WHERE name LIKE '%MIRROR_User%') DROP USER MIRROR_User; GO CREATE LOGIN MIRROR_login WITH PASSWORD = 'Password!' GO CREATE USER MIRROR_User FOR LOGIN MIRROR_login GO CREATE CERTIFICATE Mirror_Cert AUTHORIZATION MIRROR_User FROM FILE = E:\Microsoft SQL Server\certificates\Mirror_Cert.cer' GO GRANT CONNECT ON ENDPOINT::End_Mirroring TO [MIRROR_login] GO
Step 4: Create login, user and associate certificate with user on Mirror Instance
/* * * */ USE MASTER GO /* * * We are creating a SQL Login here. For Windows logins, use the Grant Login instead of Create Login Execute this against the Mirror Instance. The Principal_Cert.cer needs to be copied on the Mirror Server.
*/ IF EXISTS ( SELECT * FROM sys.syslogins WHERE name LIKE '%PRINCIPAL_login%') DROP LOGIN PRINCIPAL_login; GO IF EXISTS ( SELECT * FROM sys.sysusers WHERE name LIKE '%PRINCIPAL_User%') DROP USER PRINCIPAL_User; GO CREATE LOGIN PRINCIPAL_login WITH PASSWORD = 'Password!' GO CREATE USER PRINCIPAL_User FOR LOGIN PRINCIPAL_login GO CREATE CERTIFICATE Principal_Cert AUTHORIZATION PRINCIPAL_User FROM FILE = E:\Microsoft SQL Server\certificates\Principal_Cert.cer' GO GRANT CONNECT ON ENDPOINT::End_Mirroring TO [PRINCIPAL_login] GO
DROP ENDPOINT End_Mirroring; IF EXISTS ( SELECT * FROM sys.tcp_endpoints WHERE name LIKE '%Mirroring%') DROP ENDPOINT Mirroring; IF EXISTS ( SELECT * FROM sys.certificates WHERE name LIKE '%Principal_Cert%') DROP CERTIFICATE Principal_Cert; IF EXISTS ( SELECT * FROM sys.certificates WHERE name LIKE '%Mirror_Cert%') DROP CERTIFICATE Mirror_Cert; IF EXISTS ( SELECT * FROM sys.certificates WHERE name LIKE '%Witness_Cert%') DROP CERTIFICATE Witness_Cert; IF EXISTS (SELECT * FROM sys.symmetric_keys WHERE [name] LIKE '%DatabaseMasterKey%') DROP MASTER KEY; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Password!' GO CREATE CERTIFICATE Witness_Cert WITH SUBJECT = 'WITNESS certificate', START_DATE = 01/07/2013 GO CREATE ENDPOINT End_Mirroring STATE = STARTED AS TCP (LISTENER_PORT = 5024, LISTENER_IP = ALL) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE Witness_Cert, ENCRYPTION = REQUIRED ALGORITHM RC4, ROLE = Witness ) GO BACKUP CERTIFICATE Witness_Cert TO FILE = D:\Microsoft SQL Server\certificates\Witness_Cert.cer GO
Step 6: Create login, user and associate certificate with user on Principal Instance
/* * * */ USE MASTER GO /* * * We are creating a SQL Login here. For Windows logins, use the Grant Login instead of Create Login Execute this against the Principal Instance. The Witness_Cert.cer needs to be copied on the Principal Server.
*/ DROP USER WITNESS_User GO DROP LOGIN WITNESS_login GO CREATE LOGIN WITNESS_login WITH PASSWORD = 'Password!' GO CREATE USER WITNESS_User FOR LOGIN WITNESS_login GO CREATE CERTIFICATE Witness_Cert AUTHORIZATION WITNESS_User FROM FILE = E:\Microsoft SQL Server\certificates\Witness_Cert.cer' GO GRANT CONNECT ON ENDPOINT::End_Mirroring TO [WITNESS_login] GO
Step 7: Create login, user and associate certificate with user on Mirror Instance
/* * Execute this against the Mirror Instance. The Witness_Cert.cer * needs to be copied on the Mirror Server. */ USE MASTER GO /* * We are creating a SQL Login here. For Windows logins,
* use the Grant Login instead of Create Login */ DROP USER WITNESS_User GO DROP LOGIN WITNESS_login GO CREATE LOGIN WITNESS_login WITH PASSWORD = 'Password!' GO CREATE USER WITNESS_User FOR LOGIN WITNESS_login GO CREATE CERTIFICATE Witness_Cert AUTHORIZATION WITNESS_User FROM FILE = F:\Microsoft SQL Server\certificates\Witness_Cert.cer' GO GRANT CONNECT ON ENDPOINT::End_Mirroring TO [WITNESS_login] GO
Step 8: Create login, user and associate certificate with user on Witness Instance
/* * Execute this against the Witness Instance. The Principal_Cert.cer * and Mirror_Cert.cer needs to be copied on the Witness Server. */ USE MASTER GO /* * We are creating a SQL Login here. For Windows logins, * use the Grant Login instead of Create Login */ IF EXISTS ( SELECT * FROM sys.syslogins WHERE name LIKE '%PRINCIPAL_login%') DROP LOGIN PRINCIPAL_login; GO IF EXISTS ( SELECT * FROM sys.sysusers WHERE name LIKE '%PRINCIPAL_User%') DROP USER PRINCIPAL_User; GO CREATE LOGIN PRINCIPAL_login WITH PASSWORD = 'Password!' GO CREATE USER PRINCIPAL_User FOR LOGIN PRINCIPAL_login GO CREATE CERTIFICATE Principal_Cert AUTHORIZATION PRINCIPAL_User FROM FILE = D:\Microsoft SQL Server\certificates\Principal_Cert.cer' GO GRANT CONNECT ON ENDPOINT::End_Mirroring TO [PRINCIPAL_login] GO /* * We are creating a SQL Login here. For Windows logins, * use the Grant Login instead of Create Login */ IF EXISTS ( SELECT * FROM sys.syslogins WHERE name LIKE '%MIRROR_login%') DROP LOGIN MIRROR_login; GO IF EXISTS ( SELECT * FROM sys.sysusers WHERE name LIKE '%MIRROR_User%') DROP USER MIRROR_User; GO CREATE LOGIN MIRROR_login WITH PASSWORD = 'Password!' GO CREATE USER MIRROR_User FOR LOGIN MIRROR_login GO CREATE CERTIFICATE Mirror_Cert AUTHORIZATION MIRROR_User FROM FILE = D:\Microsoft SQL Server\certificates\Mirror_Cert.cer' GO GRANT CONNECT ON ENDPOINT::End_Mirroring TO [MIRROR_login] GO
Step 9: Create the Mirrored Database on the Mirror Server using backups from the Principal Server
/* * */ Execute this against the Principal Instance.
USE MASTER GO ALTER DATABASE MYDB_20xxMMdd SET RECOVERY FULL GO BACKUP DATABASE MYDB_20xxMMdd TO DISK = 'c:\Backups\MYDB_20xxMMdd_FullBackup.bak' GO BACKUP LOG MYDB_20xxMMdd TO DISK = 'c:\Backups\MYDB_20xxMMdd_LogBackup.trn' GO /* * * * */ USE MASTER GO RESTORE DATABASE MYDB_20xxMMdd FROM DISK = 'c:\Backups\MYDB_20xxMMdd_FullBackup.bak' WITH NORECOVERY GO RESTORE LOG MYDB_20xxMMdd FROM DISK = 'c:\Backups\MYDB_20xxMMdd_LogBackup.trn' WITH NORECOVERY GO /* * */ If there are issues here, use SSMS (GUI) to restore the database + log files. Copy MYDB_20xxMMdd_FullBackup.bak and MYDB_20xxMMdd_LogBackup.trn to the Mirror Server. Execute this against the Mirror Instance.
At this point your Database Mirroring should be up and running. You can use the Database Mirroring Monitor to verify the setup as well as to monitor the Synchronization status.
Disclaimer: All information provided here is my personal opinion and is neither verified nor approved by Microsoft before it is published. All information, and code samples, if any, is provided "AS IS" with no warranties and confers no rights.