数据库镜像对于SQLServer2005的版本有一定要求,其中主服务器和镜像服务器只能在标准版、开发版和企业版的SQL Server 2005中运行,而见证服务器可以运行在任何版本的SQLServer上。

     在进行数据库镜像前,要对主数据库进行一次完全备份,在此之前需要设置主数据库的日志恢复模式为完整模式。

     设置并备份主数据库之后就可以开始了。

     环境如下:

          主机和备机都安装了SQLServer2005企业版,并且使用交叉线互联,IP设置

          主机:192.168.0.7

          备机:192.168.0.8

 

下面可以开始了:
一、执行如下SQL语句,创建数据库镜像端点并导出证书:
     主机:

主机执行SQL
 1 USE master;
 2 --创建主密钥
 3 CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password‘;
 4 --创建证书
 5 CREATE CERTIFICATE MASTER_Cert WITH SUBJECT = 'MASTER_Certificate', START_DATE = '08/08/2008';
 6 
 7 --创建端点
 8 CREATE ENDPOINT Endpoint_Mirroring 
 9 STATE = STARTED 
10 AS 
11 TCP ( LISTENER_PORT=6666 , LISTENER_IP = ALL ) 
12 FOR 
13 --负载为数据库镜像
14 DATABASE_MIRRORING 
15 ( AUTHENTICATION = CERTIFICATE MASTER_Cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );
16 
17 --备份证书,用于主备证书互换
18 BACKUP CERTIFICATE MASTER_Cert TO FILE = 'C:\MASTER_Cert.cer';

     备机:

 

二、把主机和备机的证书互换,即把主机的证书拷贝到备机的某一文件夹等待使用,备机进行同样操作。

     执行如下SQL,设置登陆用户。

     主机:

主机执行SQL1
--添加登陆用户
2
CREATE LOGIN SLAVE_Login WITH PASSWORD = 'password';
3
CREATE USER SLAVE_User FOR LOGIN SLAVE_Login;
4
CREATE CERTIFICATE SLAVE_Cert AUTHORIZATION SLAVE_User FROM FILE = 'C:\SLAVE_Cert.cer';
5
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [SLAVE_Login];

 

     备机:

 

备机执行SQL1
--添加登陆用户
2
CREATE LOGIN MASTER_Login WITH PASSWORD = 'password';
3
CREATE USER MASTER_User FOR LOGIN MASTER_Login;
4
CREATE CERTIFICATE MASTER_Cert AUTHORIZATION MASTER_User FROM FILE = 'C:\MASTER_Cert.cer';
5
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [MASTER_Login];

三、在备机中还原数据库,把刚才主机数据库备份拷贝到备机,然后进行还原,注意选择还原条件为RESTORE WITH NORECOVERY,如图:

 

sqlserver镜像 更改镜像失败 mssql镜像数据库_主数据

sqlserver镜像 更改镜像失败 mssql镜像数据库_SQL_02

还原成功,显示正在还原。

四、在主机中执行如下SQL,执行成功则镜像设置成功,显示正在同步,如图:

 

主机执行SQL1
--设置镜像
2
ALTER DATABASE Test SET PARTNER = 'TCP://192.168.5.8:5022';

sqlserver镜像 更改镜像失败 mssql镜像数据库_SQL_03

 

镜像建成后,就可以在主数据库的属性中设置数据库镜像,例如调整运行模式(据说异步模式性能较高,正如MS所写的高性能) 

 

相关和错误解决方法:

以上互换证书如果主机和备机处于同一域中,则可以省略此步。

 如果在主机执行失败,一般是由于主备数据库的内容不一致造成的,可以在主数据库进行还原。