/******************************************************** 此脚本在主体服务器执行 ********************************************************/ --镜像只支持完全恢复模式,在备份数据库之前检查恢复的模式 --对要镜像的数据库进行完整备份后,复制到镜像数据库以NORECOVERNY选项进行恢复 USE master; --DROP MASTER KEY CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password'; GO --为此服务器实例制作一个证书。 --DROP CERTIFICATE HOST_A_cert CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = 'HOST_A certificate',START_DATE = '01/01/2009'; GO --使用该证书为服务器实例创建一个镜像端点。 --DROP ENDPOINT Endpoint_Mirroring CREATE ENDPOINT Endpoint_Mirroring STATE = STARTED AS TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE HOST_A_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = PARTNER ); GO--备份 HOST_A 证书,并将其复制到其他机器,将 C:\HOST_A_cert.cer 复制到 HOST_B\HOST_C。 BACKUP CERTIFICATE HOST_A_cert TO FILE = 'e:\HOST_A_cert.cer'; GO --为入站连接配置 Host_A --在 HOST_A 上为 HOST_B 创建一个登录名。 USE master; --DROP LOGIN HOST_B_login CREATE LOGIN HOST_B_login WITH PASSWORD = 'password'; GO--创建一个使用该登录名的用户。 --DROP USER HOST_B_user CREATE USER HOST_B_user FOR LOGIN HOST_B_login; GO --使证书与该用户关联。 --DROP CERTIFICATE HOST_B_cert CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'e:\HOST_B_cert.cer' GO--授予对远程镜像端点的登录名的 CONNECT 权限。 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login]; GO
--在 HOST_A 上为 HOST_C 创建一个登录名。 USE master; --DROP LOGIN HOST_C_login CREATE LOGIN HOST_C_login WITH PASSWORD = 'password'; GO--创建一个使用该登录名的用户。 --DROP USER HOST_C_user CREATE USER HOST_C_user FOR LOGIN HOST_C_login; GO --使证书与该用户关联。 --DROP CERTIFICATE HOST_C_cert CREATE CERTIFICATE HOST_C_cert AUTHORIZATION HOST_C_user FROM FILE = 'e:\HOST_C_cert.cer' GO--授予对远程镜像端点的登录名的 CONNECT 权限。 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_C_login]; GOUSE master; --DROP LOGIN HOST_A_login CREATE LOGIN HOST_A_login WITH PASSWORD = 'password'; GO --创建一个使用该登录名的用户。 --DROP USER HOST_A_user CREATE USER HOST_A_user FOR CERTIFICATE HOST_A_cert; GO --授予对远程镜像端点的登录名的 CONNECT 权限。 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login]; GO--必须要在镜像数据库中先设置好伙伴后,才能在主体服务器执行 --在 HOST_A 的主体服务器实例上,将 HOST_B 上的服务器实例设置为伙伴(使其成为初始镜像服务器实例)。 ALTER DATABASE crm SET PARTNER = 'TCP://192.168.1.205:5022'; GO--设置见证服务器 ALTER DATABASE crm SET WITNESS = N'TCP://192.168.1.204:5022'; GO
/*********************************************** 在镜像服务器执行此脚本 ***********************************************/ USE master; --DROP MASTER KEY CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password'; GO --为 HOST_B 服务器实例制作一个证书。 --DROP CERTIFICATE HOST_B_cert CREATE CERTIFICATE HOST_B_cert WITH SUBJECT = 'HOST_B certificate for database mirroring',START_DATE = '01/01/2009'; GO --在 HOST_B 中为服务器实例创建一个镜像端点。 --DROP ENDPOINT Endpoint_Mirroring CREATE ENDPOINT Endpoint_Mirroring STATE = STARTED AS TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE HOST_B_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = PARTNER ); GO --备份 HOST_B 证书,将 C:\HOST_B_cert.cer 复制到 HOST_A\HOST_C。 BACKUP CERTIFICATE HOST_B_cert TO FILE = 'e:\HOST_B_cert.cer'; GO --为入站连接配置 Host_B --在 HOST_B 上为 HOST_A 创建一个登录名。 USE master; --DROP LOGIN HOST_A_login CREATE LOGIN HOST_A_login WITH PASSWORD = 'password'; GO --创建一个使用该登录名的用户。 --DROP USER HOST_A_user CREATE USER HOST_A_user FOR LOGIN HOST_A_login; GO --使证书与该用户关联。 --DROP CERTIFICATE HOST_A_cert CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = 'e:\HOST_A_cert.cer' GO--授予对远程镜像端点的登录名的 CONNECT 权限。 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login]; GO--在 HOST_B 上为 HOST_C 创建一个登录名。 USE master; --DROP LOGIN HOST_C_login CREATE LOGIN HOST_C_login WITH PASSWORD = 'password'; GO--创建一个使用该登录名的用户。 --DROP USER HOST_C_user CREATE USER HOST_C_user FOR LOGIN HOST_C_login; GO --使证书与该用户关联。 --DROP CERTIFICATE HOST_C_cert CREATE CERTIFICATE HOST_C_cert AUTHORIZATION HOST_C_user FROM FILE = 'e:\HOST_C_cert.cer' GO--授予对远程镜像端点的登录名的 CONNECT 权限。 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_C_login]; GO--在 HOST_B 上为 HOST_B 创建一个登录名。 USE master; --DROP LOGIN HOST_B_login CREATE LOGIN HOST_B_login WITH PASSWORD = 'password'; GO --创建一个使用该登录名的用户。 --DROP USER HOST_B_user CREATE USER HOST_B_user FOR CERTIFICATE HOST_B_cert; GO --授予对远程镜像端点的登录名的 CONNECT 权限。 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login]; GO --在 HOST_B 的镜像服务器实例上,将 HOST_A 上的服务器实例设置为伙伴(使其成为初始主体服务器实例)。 ALTER DATABASE crm SET PARTNER = 'TCP://192.168.1.203:5022'; GO
手动故障转移代码 --主备互换 --主机执行:ALTER DATABASE crm SET PARTNER FAILOVER--主服务器Down掉,备机紧急启动并且开始服务 ALTER DATABASE crm SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS 原来的主服务器恢复,可以继续工作,需要重新设定镜像 --备机执行: USE master ALTER DATABASE crm SET PARTNER RESUME --恢复镜像ALTER DATABASE crm SET PARTNER FAILOVER; --切换主备
此脚本在主体服务器执行
********************************************************/
--镜像只支持完全恢复模式,在备份数据库之前检查恢复的模式
--对要镜像的数据库进行完整备份后,复制到镜像数据库以NORECOVERNY选项进行恢复
USE master;
--DROP MASTER KEY
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';
GO
--为此服务器实例制作一个证书。
--DROP CERTIFICATE HOST_A_cert
CREATE CERTIFICATE HOST_A_cert
WITH SUBJECT = 'HOST_A certificate',START_DATE = '01/01/2009';
GO
--使用该证书为服务器实例创建一个镜像端点。
--DROP ENDPOINT Endpoint_Mirroring
CREATE ENDPOINT Endpoint_Mirroring
STATE = STARTED
AS TCP (
LISTENER_PORT=5022
, LISTENER_IP = ALL
)
FOR DATABASE_MIRRORING (
AUTHENTICATION = CERTIFICATE HOST_A_cert
, ENCRYPTION = REQUIRED ALGORITHM AES
, ROLE = PARTNER
);
GO--备份 HOST_A 证书,并将其复制到其他机器,将 C:\HOST_A_cert.cer 复制到 HOST_B\HOST_C。
BACKUP CERTIFICATE HOST_A_cert TO FILE = 'e:\HOST_A_cert.cer';
GO
--为入站连接配置 Host_A
--在 HOST_A 上为 HOST_B 创建一个登录名。
USE master;
--DROP LOGIN HOST_B_login
CREATE LOGIN HOST_B_login WITH PASSWORD = 'password';
GO--创建一个使用该登录名的用户。
--DROP USER HOST_B_user
CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
GO
--使证书与该用户关联。
--DROP CERTIFICATE HOST_B_cert
CREATE CERTIFICATE HOST_B_cert
AUTHORIZATION HOST_B_user
FROM FILE = 'e:\HOST_B_cert.cer'
GO--授予对远程镜像端点的登录名的 CONNECT 权限。
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];
GO
--在 HOST_A 上为 HOST_C 创建一个登录名。
USE master;
--DROP LOGIN HOST_C_login
CREATE LOGIN HOST_C_login WITH PASSWORD = 'password';
GO--创建一个使用该登录名的用户。
--DROP USER HOST_C_user
CREATE USER HOST_C_user FOR LOGIN HOST_C_login;
GO
--使证书与该用户关联。
--DROP CERTIFICATE HOST_C_cert
CREATE CERTIFICATE HOST_C_cert
AUTHORIZATION HOST_C_user
FROM FILE = 'e:\HOST_C_cert.cer'
GO--授予对远程镜像端点的登录名的 CONNECT 权限。
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_C_login];
GOUSE master;
--DROP LOGIN HOST_A_login
CREATE LOGIN HOST_A_login WITH PASSWORD = 'password';
GO
--创建一个使用该登录名的用户。
--DROP USER HOST_A_user
CREATE USER HOST_A_user FOR CERTIFICATE HOST_A_cert;
GO
--授予对远程镜像端点的登录名的 CONNECT 权限。
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];
GO--必须要在镜像数据库中先设置好伙伴后,才能在主体服务器执行
--在 HOST_A 的主体服务器实例上,将 HOST_B 上的服务器实例设置为伙伴(使其成为初始镜像服务器实例)。
ALTER DATABASE crm
SET PARTNER = 'TCP://192.168.1.205:5022';
GO--设置见证服务器
ALTER DATABASE crm SET WITNESS = N'TCP://192.168.1.204:5022';
GO
在镜像服务器执行此脚本
***********************************************/
USE master;
--DROP MASTER KEY
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';
GO
--为 HOST_B 服务器实例制作一个证书。
--DROP CERTIFICATE HOST_B_cert
CREATE CERTIFICATE HOST_B_cert
WITH SUBJECT = 'HOST_B certificate for database mirroring',START_DATE = '01/01/2009';
GO
--在 HOST_B 中为服务器实例创建一个镜像端点。
--DROP ENDPOINT Endpoint_Mirroring
CREATE ENDPOINT Endpoint_Mirroring
STATE = STARTED
AS TCP (
LISTENER_PORT=5022
, LISTENER_IP = ALL
)
FOR DATABASE_MIRRORING (
AUTHENTICATION = CERTIFICATE HOST_B_cert
, ENCRYPTION = REQUIRED ALGORITHM AES
, ROLE = PARTNER
);
GO
--备份 HOST_B 证书,将 C:\HOST_B_cert.cer 复制到 HOST_A\HOST_C。
BACKUP CERTIFICATE HOST_B_cert TO FILE = 'e:\HOST_B_cert.cer';
GO --为入站连接配置 Host_B
--在 HOST_B 上为 HOST_A 创建一个登录名。
USE master;
--DROP LOGIN HOST_A_login
CREATE LOGIN HOST_A_login WITH PASSWORD = 'password';
GO
--创建一个使用该登录名的用户。
--DROP USER HOST_A_user
CREATE USER HOST_A_user FOR LOGIN HOST_A_login;
GO
--使证书与该用户关联。
--DROP CERTIFICATE HOST_A_cert
CREATE CERTIFICATE HOST_A_cert
AUTHORIZATION HOST_A_user
FROM FILE = 'e:\HOST_A_cert.cer'
GO--授予对远程镜像端点的登录名的 CONNECT 权限。
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];
GO--在 HOST_B 上为 HOST_C 创建一个登录名。
USE master;
--DROP LOGIN HOST_C_login
CREATE LOGIN HOST_C_login WITH PASSWORD = 'password';
GO--创建一个使用该登录名的用户。
--DROP USER HOST_C_user
CREATE USER HOST_C_user FOR LOGIN HOST_C_login;
GO
--使证书与该用户关联。
--DROP CERTIFICATE HOST_C_cert
CREATE CERTIFICATE HOST_C_cert
AUTHORIZATION HOST_C_user
FROM FILE = 'e:\HOST_C_cert.cer'
GO--授予对远程镜像端点的登录名的 CONNECT 权限。
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_C_login];
GO--在 HOST_B 上为 HOST_B 创建一个登录名。
USE master;
--DROP LOGIN HOST_B_login
CREATE LOGIN HOST_B_login WITH PASSWORD = 'password';
GO
--创建一个使用该登录名的用户。
--DROP USER HOST_B_user
CREATE USER HOST_B_user FOR CERTIFICATE HOST_B_cert;
GO
--授予对远程镜像端点的登录名的 CONNECT 权限。
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];
GO
--在 HOST_B 的镜像服务器实例上,将 HOST_A 上的服务器实例设置为伙伴(使其成为初始主体服务器实例)。
ALTER DATABASE crm
SET PARTNER = 'TCP://192.168.1.203:5022';
GO
--主备互换
--主机执行:ALTER DATABASE crm SET PARTNER FAILOVER--主服务器Down掉,备机紧急启动并且开始服务
ALTER DATABASE crm SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS
原来的主服务器恢复,可以继续工作,需要重新设定镜像
--备机执行:
USE master
ALTER DATABASE crm SET PARTNER RESUME --恢复镜像ALTER DATABASE crm SET PARTNER FAILOVER; --切换主备
-- 我也Google到了这个贴子,可是执行出错......哎,还是我慢慢琢磨吧.....网上好多大都是拷贝一下,
-- 真正去实践过一把的人少!
http://wenku.baidu.com/view/bbc8fdc7aa00b52acfc7ca0d.html
http://blog.chinaunix.net/u1/37091/showart_2079785.html 刚刚搜到的看看2008是没有用过
/***********************************************
在镜像服务器执行此脚本
***********************************************/
USE master;
--DROP MASTER KEY
CREATE MASTER KEY ENCRYPT……
我试过了、、可以