A continuación facilitamos un método de puesta a punto de Mirroring de Base de Datos en SQL Server 2008 R2.
Las sentencias a ejecutar se encuentran organizadas por orden secuencial (o cronológico) de ejecución y clasificadas entre el servidor principal (o máster) y el de mirroring (o «reflejo de Base de Datos»).

Siguiendo los pasos estipulados en la tabla siguiente podrá configurar un sistema de DB Mirroring de SQL Server 2008 (R2).
Tenga en cuenta que es probable que su instalación de SQL Server o que su Base de Datos difiera del sistema estándar que comentamos. Recomendamos primero que comprenda el porqué de todos los pasos explicados a continuación y luego los aplique bajo su criterio según los requisitos de sus sistemas.

Principal
Mirror
Prepare instances
Create database
master key, if needed
USE master
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘<strong password>’
GO
USE master
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘<strong password>’
GO
If you want or
need  to delete the data base master key
USE master
GO
DROP MASTER KEY
GO
USE master
GO
DROP MASTER KEY
GO
Make certificates
USE master
GO
CREATE CERTIFICATE LAB_SRV1_cert
       WITH SUBJECT
= ‘LAB-SRV1
certificate’
GO
USE master
GO
CREATE CERTIFICATE LAB_SRV2_cert
       WITH SUBJECT
= ‘LAB-SRV2
certificate’
GO
If you want or need to
delete certificates
USE master
GO
DROP CERTIFICATE LAB_SRV1_cert
GO
USE master
GO
DROP CERTIFICATE LAB_SRV2_cert
GO
Create mirroring
endpoint
USE master
GO
CREATE ENDPOINT Endpoint_Mirroring

STATE =
STARTED

AS TCP (
      LISTENER_PORT=5022
      , LISTENER_IP = ALL

)

FOR DATABASE_MIRRORING(
      AUTHENTICATION
= CERTIFICATE
LAB_SRV1_cert
      , ENCRYPTION = REQUIRED ALGORITHM
AES
      , ROLE = ALL

)
GO
USE master
GO
CREATE ENDPOINT Endpoint_Mirroring

STATE =
STARTED

AS TCP (
      LISTENER_PORT=5022
      , LISTENER_IP = ALL

)

FOR DATABASE_MIRRORING(
      AUTHENTICATION
= CERTIFICATE
LAB_SRV2_cert
      , ENCRYPTION = REQUIRED ALGORITHM
AES
      , ROLE = ALL

)
GO
If you want or need to delete endpoint
USE master
GO
DROP ENDPOINT [Endpoint_Mirroring]
GO
USE master
GO
DROP ENDPOINT [Endpoint_Mirroring]
GO
Backup certificates
USE master
GO
BACKUP CERTIFICATE LAB_SRV1_cert

TO FILE
= ‘C:BACKUPSLAB_SRV1_cert.cer’
GO
USE master
GO
BACKUP CERTIFICATE LAB_SRV2_cert

TO FILE
= ‘C:BACKUPSLAB_SRV2_cert.cer’
GO
Copy certificates
between instances
Use any secure copy method
Use any secure copy method
Configure inbound connections
Create logins
USE master
GO
CREATE LOGIN LAB_SRV2_login

WITH PASSWORD
= ‘<strong
password>’
GO
USE master
GO
CREATE LOGIN LAB_SRV1_login

WITH PASSWORD
= ‘<strong password>’
GO
Create user for
login
USE master
GO
CREATE USER LAB_SRV2_user FOR
LOGIN LAB_SRV2_login
GO
USE master
GO
CREATE USER LAB_SRV1_user FOR
LOGIN LAB_SRV1_login
GO
Associate the
certificate with the user
USE master
GO
CREATE CERTIFICATE LAB_SRV2_cert
   AUTHORIZATION LAB_SRV2_user
   FROM FILE
= ‘C:BACKUPSLAB_SRV2_cert.cer’
GO
USE master
GO
CREATE CERTIFICATE LAB_SRV1_cert
   AUTHORIZATION LAB_SRV1_user
   FROM FILE
= ‘C:BACKUPSLAB_SRV1_cert.cer’
GO
Grant CONNECT
permission at login for the remote mirroring endpoint
USE master
GO
GRANT CONNECT

ON ENDPOINT::Endpoint_Mirroring TO
[LAB_SRV2_login]
GO
USE master
GO
GRANT CONNECT

ON ENDPOINT::Endpoint_Mirroring TO
[LAB_SRV1_login]
GO
Prepare database
Create database
CREATE DATABASE [DBMTest] ON  PRIMARY
 (NAME =
N’DBMTest’,
   FILENAME = N’C:MSSQLDATADBMTest.mdf’)
LOG ON
 (NAME =
N’DBMTest_log’            ,
   FILENAME = N’C:MSSQLDATADBMTest_log.ldf’)
GO
USE [DBMTest]
GO
CREATE TABLE [dbo].[TTest](

[ID] [int] IDENTITY(1,1) NOT NULL,

[DayAndTime] [datetime] NOT NULL
)
GO
Backup database
BACKUP DATABASE [DBMTest]

TO
DISK =
N’C:BACKUPSDBMTest.bak’
   WITH NOFORMAT,
   INIT, 

NAME = N’DBMTest-Full
Database Backup’
,
   SKIP,
   NOREWIND,
   NOUNLOAD, 
   STATS =
10
GO
Backup transaction
log
BACKUP LOG [DBMTest]
   TO DISK = N’C:BACKUPSDBMTest_log.bak’
   WITH NOFORMAT,
   INIT, 

NAME = N’DBMTest-Transaction
Log  Backup’
,
   SKIP,
   NOREWIND,
   NOUNLOAD, 

STATS =
10
GO
Restore database
RESTORE DATABASE [DBMTest]
   FROM
DISK =
N’C:BACKUPSDBMTest.bak’
   WITH
FILE =
1, 
   MOVE N’DBMTest_log’
TO N’C:MSSQLDATADBMTest.ldf’,
   NORECOVERY,

NOUNLOAD, 

STATS =
10
GO
Restore transaction
log
RESTORE LOG [DBMTest]

FROM
DISK =
N’C:BACKUPSDBMTest_log.bak’
   WITH
FILE =
1, 
   NORECOVERY, 
   NOUNLOAD, 
   STATS =
10
GO
Configure the mirroring
partners and start mirroring
First, on the mirror
instance
ALTER DATABASE DBMTest

SET PARTNER
= ‘TCP://LAB-SRV1:5022’
GO
And then, on
the principal instance
ALTER DATABASE DBMTest

SET PARTNER
= ‘TCP://LAB-SRV2:5022’
GO
Configure performance
and safety mode
High performance (asynchronous
mode)
ALTER DATABASE DBMTest SET
PARTNER SAFETY
OFF
GO
High safety
(synchronous mode)
ALTER DATABASE DBMTest SET
PARTNER SAFETY
FULL
GO
Managing database
mirroring
Pause mirroring
ALTER DATABASE DBMTest SET PARTNER SUSPEND
Resume mirroring
ALTER DATABASE DBMTest SET PARTNER RESUME
Manual failover (asynchronous
mode)
ALTERDATABASE DBMTest SET SAFETY FULL
GO
ALTERDATABASE DBMTest SET PARTNER FAILOVER
GO
ALTERDATABASE DBMTest SET SAFETY FULL
GO
Manual failover
(synchronous mode)
ALTERDATABASE DBMTest SET PARTNER FAILOVER
GO
Remove database mirroring
ALTER DATABASE DBMTest SET PARTNER OFF

TAGS: base de datos, BBDD, certificados, how-to, microsoft, sql, sql server

speech-bubble-13-icon Created with Sketch.
Comentarios
vanessa | enero 9, 2013 6:07 pm

que secure copy method aconsejas?

Reply
Toni Planas | enero 10, 2013 10:33 am

Hola Vanessa,

Muchas gracias por seguirnos.

El método para transferir los certificados entre los servidores dependerá del tipo de comunicación entre ellos. Lo más aconsejable seria disponer de una VPN entre los CPDs, si dispones de una VPN puedes transferir los certificados a través de ella.

¡Gracias por visitarnos!

Reply
Ulyses | agosto 28, 2012 2:49 am

no logro hacer que los servidores se conecten entre si, en el servidor principal me muestra la instancia «syncronized», y abajo me muestra el mirror con error «retriving data».
Mirando en el monitor del servidor mirror, me muestra la instancia mirror «syncronized» y el principal con error «retriving data».

Reply
Toni Planas | septiembre 3, 2012 3:39 pm

Hola Ulyses,

En primer lugar gracias por leer nuestro blog, esperamos ser de ayuda 🙂
En referencia al problema que experimentas, necesitaría un poco mas de información para intentar ayudarte:
– Versiones de sistema operativo en ambos servers
– Versiones de SQL Server en ambos servers
– ¿Puedes hacer ping entres los dos servers?

Si los servidores tienen conectividad entre ellos podrías revisar el Firewall de Windows y para ello tienes dos opciones:
– Desactivar el Firewall de Windows
– Comprobar que los puertos especificados en el paso “Create mirroring endpoints” están abiertos para entrada y salida

Asegúrate de haber ejecutados cada uno de los pasos descritos en el post y que cada uno de ellos se haya ejecutado correctamente.
¡Gracias por visitarnos!

Toni Planas

Reply
Víctor Ruiz | mayo 14, 2012 5:14 pm

Bravo! Si este post hubiera existido hace más tiempo me habría ahorrado horas de búsqueda y pruebas para conseguir lo que has resumido aquí a la perfección!

Reply
Toni Planas | mayo 17, 2012 12:59 pm

¡Muchas gracias por tu comentario Víctor!
Nos gusta que haya podido ser de utilidad.
Sigue pasándote por el blog, intentamos publicar de manera regular.
¡Un saludo!

Reply

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*
*