SQL SERVER2008 镜像全攻略

 SQL SERVER2008 镜像全攻略

[sql] view plaincopy

  1. 在非域控环境中创建数据库镜像, 我们必须使用证书来创建数据库镜像。 大致的步骤包括:  

  2.   

  3. 在为数据库镜像配置的每个服务器实例上执行下列步骤:  

  4.   

  5. 在 master 数据库中,创建数据库主密钥。  

  6. 在 master 数据库中,为服务器实例创建加密证书。  

  7. 使用服务器实例的证书为该服务器实例创建端点。  

  8. 将证书备份到文件,并将其安全地复制到其他系统。  

  9.    

  10.   

  11. 然后,对为数据库镜像配置的每个伙伴执行这些步骤。在 master 数据库中:  

  12.   

  13. 为其他系统创建登录名。  

  14. 创建一个使用该登录名的用户。  

  15. 获取其他服务器实例的镜像端点的证书。  

  16. 将该证书与在步骤 2 中创建的用户相关联。  

  17. 授予对该镜像端点的登录名的 CONNECT 权限。  

  18.    

  19.   

  20. /*查询所有当前数据库名  

  21. select SERVERPROPERTY(N'servername')  

  22. SELECT  

  23. dtb.name AS [Name]  

  24. FROM  

  25. master.sys.databases AS dtb  

  26. ORDER BY  

  27. [NameASC  

  28. */  

  29. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—————————————————–前期准备  

  30. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–< 查看数据库版本  

  31.    SELECT @@VERSION  

  32. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—配置数据库镜像事务安全级别   

  33.    ALTER DATABASE TestMirroring SET SAFETY FULL   

  34. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—更改主数据库为使用完整恢复模式(如果非完整恢复模式则 可以使用下面SQL更改为 完整恢复模式)  

  35.    USE master  

  36.     ALTER DATABASE TestMirroring   

  37.     SET RECOVERY FULL WITH no_wait  

  38.   

  39. /*跨数据库事务和分布式事务均不支持数据库镜像  

  40. */  

  41.   

  42. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<主服务器 见证服务器 镜像服务器的数据库版本必须相同  

  43. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<备份主数据库(完整备份)  

  44.    BACKUP DATABASE [TestMirroring] TO  DISK = N'C:/wenzhongfiles/TestMirror.bak' WITH NOFORMAT, NOINIT,   

  45.    NAME = N'TestMirroring-完整 数据库 备份', SKIP, NOREWIND, NOUNLOAD,  STATS = 10  

  46. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<备份主数据库的完整日志文件  

  47.    BACKUP LOG [TestMirroring] TO  DISK = N'C:/wenzhongfiles/TestMirrorlog.bak' WITH NOFORMAT, NOINIT,   

  48.    NAME = N'TestMirroring-事务日志  备份', SKIP, NOREWIND, NOUNLOAD,  STATS = 10  

  49. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<在镜像服务器上还原(还原选项 norecovery(即不对数据库执行任何操作))  

  50.    RESTORE DATABASE [TestMirroring] FROM  DISK = N'F:/TestMirror.bak' WITH  FILE = 1,  MOVE N'TestMirror'  

  51.     TO N'E:/Program Files/Microsoft SQL Server/MSSQL10.MSSQLSERVER/MSSQL/DATA/TestMirroring.mdf',  MOVE N'TestMirror_log'  

  52.     TO N'E:/Program Files/Microsoft SQL Server/MSSQL10.MSSQLSERVER/MSSQL/DATA/TestMirroring_1.ldf',  NORECOVERY,  NOUNLOAD,  REPLACE,  STATS = 10  

  53. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<将备份的完整日志文件在 镜像服务器上执行 日志文字间恢复(还原选项 norecovery(即不对数据库执行任何操作))  

  54.    RESTORE LOG [TestMirroring] FROM  DISK = N'F:/TestMirrorlog.bak' WITH  FILE = 1,  NORECOVERY,  NOUNLOAD,  STATS = 10  

  55.   

  56.   

  57. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<————正式开始(代码仅仅是举例主服务器上的)  

  58.   

  59. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<————————————————————————在 主、镜像、见证服务器上 分别执行:  

  60. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—-创建数据库对称密钥  

  61.   USE master;     

  62.   <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<DROP MASTER KEY     

  63.   CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'wenzhong';     

  64.   GO   

  65. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—-创建数据库证书(注意:证书失效日期)  

  66.   <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<DROP CERTIFICATE host_A_cert     

  67.   CREATE CERTIFICATE host_A_cert      

  68.   WITH SUBJECT = 'host_A certificate',START_DATE = '01/01/2011',EXPIRY_DATE = '12/31/2099';    

  69.   GO     

  70. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—-利用创建的证书为服务器实例创建镜像端点  

  71.   <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<DROP ENDPOINT Endpoint_Mirroring     

  72.   CREATE ENDPOINT Endpoint_Mirroring     

  73.   STATE = STARTED     

  74.   AS TCP (     

  75.   LISTENER_PORT=5022     

  76.   , LISTENER_IP = ALL     

  77.   )      

  78.   FOR DATABASE_MIRRORING (      

  79.   AUTHENTICATION = CERTIFICATE host_A_cert     

  80.   , ENCRYPTION = REQUIRED ALGORITHM AES     

  81.   , ROLE = PARTNER     

  82.   )     

  83.   GO     

  84. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—-将证书分别备份出来,然后互换(即:主服务器上保证存在 镜像和见证服务器上创建的证书;镜像服务器上 存在 主服务器和见证服务器上创建的证书;  

  85. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<          见证服务器上存在 主服务器和镜像服务器上创建的证书)  

  86.   BACKUP CERTIFICATE host_A_cert TO FILE = 'F:\Host_A_cert.cer'  

  87. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—-在各自的服务器上为其他两个服务器分别创建一个登陆名  

  88.   USE master;     

  89.   <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<DROP LOGIN host_B_login     

  90.   CREATE LOGIN host_B_login WITH PASSWORD = 'wenzhong'     

  91.   GO    

  92.   USE master;     

  93.   <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<DROP LOGIN host_C_login     

  94.   CREATE LOGIN host_C_login WITH PASSWORD = 'wenzhong'    

  95.   GO    

  96. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—-创建一个使用上面创建的登录名的用户  

  97.   <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<DROP USER host_B_user     

  98.   CREATE USER host_B_user FOR LOGIN host_B_login;     

  99.   GO <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<DROP USER host_C_user     

  100.   CREATE USER host_C_user FOR LOGIN host_C_login;     

  101.   GO   

  102. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—-使得证书和用户进行关联  

  103.   <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<DROP CERTIFICATE host_B_cert     

  104.   CREATE CERTIFICATE host_B_cert     

  105.   AUTHORIZATION host_B_user     

  106.   FROM FILE = 'F:/host_B.cer'    

  107.   GO   

  108.   <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<DROP CERTIFICATE host_C_cert     

  109.   CREATE CERTIFICATE host_C_cert     

  110.   AUTHORIZATION host_C_user     

  111.   FROM FILE = 'F:/host_C.cer'    

  112.   GO  

  113. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—-将对远程镜像端点的连接(CONNECT)权限授予该登录名  

  114.   GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [host_B_login]     

  115.   GO  

  116.   GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [host_C_login]    

  117.   GO  

  118.   

  119. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—————避免“孤立用户”。镜像服务器的缺点就是不能自动维护登录名,需要手动维护。  

  120. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—–在主服务器中查找相应的用户名和对应的SID号  

  121.   USE master   

  122.   select sid,name from syslogins  

  123. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—–在镜像服务器上(备机上)将对应的用户名和SID创建起来  

  124.   USE master     

  125.   exec sp_addlogin      

  126.   @loginame = '<LoginName>',      

  127.   @passwd = '<Password>',      

  128.   @sid = <sid>    

  129. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—–可以在此时进行备份主数据库和日志并进行还原操作,也可以在正式开始前执行备份和还原操作(sql见前面)  

  130.   

  131.   

  132. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—————————————————————————最后  

  133. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<——在镜像服务器上将主数据库设置为其伙伴(必须首先执行,顺序不能颠倒)  

  134.   ALTER DATABASE TestMirroring     

  135.   SET PARTNER = 'TCP://192.168.0.211:5022'     

  136.   GO   

  137. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<——在主数据库服务器上将镜像服务器设置为其伙伴  

  138.   ALTER DATABASE TestMirroring     

  139.   SET PARTNER = 'TCP://192.168.0.111:5022'     

  140.   GO   

  141. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<——在主数据库服务器上设置见证服务器。  

  142.   ALTER DATABASE TestMirroring      

  143.   SET WITNESS = 'TCP://192.168.0.192:5022'     

  144.   GO   

  145.   

  146. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—————————————————————————对设置是否成功进行测试  

  147. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<——由于镜像 的缺点:在镜像服务器上无法查询数据。需要测试是否可以成功。(数据库复制功能则可以)  

  148. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<——通过在镜像数据库上创建数据库快照可以间接读取某一个时刻点的镜像数据库  

  149. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<——测试过程:  

  150. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<——主机上执行:  

  151.  USE master;     

  152.   

  153. ALTER DATABASE TestMirroring SET SAFETY FULL;<span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—切换到高安全模式否则执行手动切换会失败  

  154.   

  155. GO  

  156.  ALTER DATABASE TestMirroring SET PARTNER FAILOVER  <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<-手动进行主备切换  

  157. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—-镜像服务器上执行:  

  158.  USE master;     

  159.  ALTER DATABASE TestMirroring SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<-在镜像机上执行强制切换(当主服务器数据宕机时)  

  160.   

  161.   

  162. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—–如果原来的主服务器恢复,可以继续工作,需要重新设定镜像  

  163. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<–备机(镜像服务器)上执行:  

  164. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<恢复镜像       

  165.  USE master;     

  166.  ALTER DATABASE TestMirroring SET PARTNER RESUME    

  167. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<切换主备  

  168.  ALTER DATABASE TestMirroring SET PARTNER FAILOVER   

  169. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<———————-删除数据库镜像  

  170.   ALTER DATABASE TestMirroring SET PARTNER OFF  

  171. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<———暂停数据库镜像会话  

  172.    ALTER DATABASE TestMirroring SET PARTNER SUSPEND   

  173. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—恢复数据库镜像会话  

  174.    ALTER DATABASE TestMirroring SET PARTNER RESUME  

  175.    ALTER DATABASE TestMirroring SET PARTNER SUSPEND   

  176. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—关闭见证服务器  

  177.    ALTER DATABASE TestMirroring SET WITNESS OFF  

  178.   

  179.    

  180.   

  181.    

  182.   

  183. /*  

  184.   

  185. 默认情况下,事务安全级别的设置为 FULL,即同步运行模式,而且SQL Server 2005 标准版只支持同步模式。  

  186. 关闭事务安全可将会话切换到异步运行模式,该模式可使性能达到最佳。  

  187. */  

  188. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<事务安全,同步模式    

  189.  USE master;     

  190.  ALTER DATABASE TestMirroring SET PARTNER SAFETY FULL   

  191. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<事务不安全,异步模式    

  192.  ALTER DATABASE TestMirroring SET PARTNER SAFETY OFF;  

  193.   

  194. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<——在高性能模式下,见证服务器对可用性会有不利影响。如果见证服务器是针对数据库镜像会话而配置,则主体服务器必须至少连接到一个其他服务器实例,  

  195. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<  即镜像服务器或见证服务器,或者是连接到这两个服务器。否则,将无法使用数据库,并且不能进行强制服务(可能丢失数据)。  

  196. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<  因此,对于高性能模式,建议始终将见证服务器设置为 OFF。  

  197. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<  见证服务器的唯一角色是支持自动故障转移。并不能用于数据库,是 SQL Server 的可选实例。  

  198. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<     它能使高安全性模式会话中的镜像服务器识别出是否要启动自动故障转移(见证服务器的角色就是启动自动故障转移)。  

  199.   ALTER DATABASE TestMirroring SET PARTNER OFF  

  200.     

  201. /*  

  202.  自动故障转移所需条件  

  203.   

  204.   A、数据库镜像会话必须在高安全性模式下运行,并且必须处理见证服务器。  

  205.   B、镜像数据库必须已经同步。这将保证发送到镜像服务器的所有日志都已写入磁盘。  

  206.   C、主体服务器已中断了与其余数据库镜像配置的通信,而镜像服务器和见证服务器将保留仲裁。但是,如果所有服务器实例都已中断通信,  

  207.    而见证服务器和镜像服务器稍后重新建立通信,则不会发生自动故障转移。  

  208.   D、镜像服务器已检测到丢失了主体服务器  

  209.   E、镜像服务器检测主体服务器故障的方式取决于故障是硬故障还是软故障。  

  210.   

  211.  自动故障转移原理  

  212.   

  213.   A、如果主体服务器仍在运行中,则将主体数据库的状态更改为 DISCONNECTED 并断开所有客户端与主体数据库的连接。  

  214.   B、见证服务器和镜像服务器将主体服务器注册为不可用。  

  215.   C、如果重做队列中有任何等待的日志,则镜像服务器将完成前滚镜像数据库的操作  

  216.   D、前一个镜像数据库作为新的联机主体数据库,恢复通过尽快回滚未提交的事务将这些事务全部清除。锁将隔离这些事务。  

  217.   E、当前一个主体服务器重新联接到会话时,它将认定其故障转移伙伴现在拥有主体角色。前一个主体服务器接管镜像角色,并将其数据库作为镜像数据库。  

  218.    新的镜像服务器会尽快将新的镜像数据库与主体数据库同步。新的镜像服务器重新同步数据库后,就可以再次执行故障转移,但按反向执行。。  

  219. */  

  220.   

  221. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<——————外延  

  222. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—使用ADO.NET或者SQL Native Client能够自动连接到故障转移后的伙伴,连接字符串如下所示:  

  223.   ConnectionString="DataSource= A;Failover Partner=B;Initial Catalog=AdventureWorks;Integrated Security=true;   

  224.   

  225. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<如果没有镜像服务器的建设,或环境无法实现镜像服务器的建设。通过下面的代码一样可以实现类似镜像的功能   

  226.   

  227. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—C# code  

  228.   

  229.   

  230. Imports System.Data.SqlClient   

  231. Imports System.Data   

  232.    

  233. Public Class dbConn   

  234. Private primaryServerLocation As String="SERVER=primaryAddress;DATABASE=yourDB;User id=youruserID;Password=yourPassword;"   

  235. Private secondaryServerLocationAsString="SERVER=secondaryAddress;DATABASE=yourDB;User id=youruserID;Password=yourPassword;"   

  236.    

  237.    

  238. Public sqlConnection AsSqlConnection   

  239. Public cmd AsSqlCommand   

  240.    

  241. Public Sub primaryConnection()   

  242.     Try   

  243.         sqlConnection = New System.Data.SqlClient.SqlConnection(primaryServerLocation)   

  244.         cmd = NewSystem.Data.SqlClient.SqlCommand()   

  245.    

  246.         'test connection   

  247.         sqlConnection.Open()   

  248.         sqlConnection.Close()   

  249.     Catch ex As Exception   

  250.         secondaryConnection()   

  251.     End Try   

  252. End Sub   

  253.    

  254. Public Sub secondaryConnection()   

  255.     'Used as the failover secondary serverif primaryis down.   

  256.     Try   

  257.         sqlConnection = New System.Data.SqlClient.SqlConnection(secondaryServerLocation)   

  258.         cmd = NewSystem.Data.SqlClient.SqlCommand()   

  259.    

  260.         'test connection   

  261.         sqlConnection.Open()   

  262.         sqlConnection.Close()   

  263.     Catch ex As Exception   

  264.     End Try   

  265. End Sub   

  266.   

  267.   

  268. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<—C# code  

  269.   <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–<=================查看数据库镜像的配置状态=================   

  270.   

  271. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–< 1.通过Management studio 对象资源管理器,查看主体数据库、镜像数据库状态   

  272. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–< 2.通过Management studio 对象资源管理器中的数据库属性查看状态   

  273. <span style="margin: 0px; padding: 0px; border: none; background-color: inherit; color: rgb(0, 130, 0); font-family: Consolas, "Courier New", Courier, mono, serif; font-size: 12px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; line-height: 17.6px;"–< 3.通过系统目录视图查看数据库镜像配置情况   

  274.   

  275.  use master   

  276.   go   

  277.   SELECT * FROM sys.database_mirroring_endpoints   

  278.   SELECT * FROM sys.database_mirroring   

  279.   WHERE database_id =(SELECT database_id FROM sys.databases   

  280.           WHERE name = 'TestMirroring')  

  281.   SELECT * FROM sys.database_mirroring_witnesses  

  282.    

  283.   

  284.   

  285.   

  286.    

  287.   

  288. 镜像的运行模式有三种:  

  289.   

  290. 1、 高性能(异步):先提交主服务器上的更改,然后将其传输到镜像服务器上。  

  291.   

  292. 2、不带自动故障转移功能的高安全(同步): 过程始终提交主服务和镜像服务器上的更改。  

  293.   

  294. 3、带自动故障转移功能的高安全(同步):需要见证服务器实例。如果主服务器和镜像服务器都可用,则提交在它们上面所做的更改并镜像。如果主服务器不可用,则见证服务器就会控制自动故障转移到镜像服务器上。  

  295.   

  296.    

此条目发表在未分类分类目录,贴了标签。将固定链接加入收藏夹。