SQL SERVER 2008 數據庫鏡像動手實驗筆記

 

  1. ----判斷數據庫是否正在被使用,如果被使用中,那麼中止使用數據庫的進程 
  2. IF EXISTS(SELECT * FROM sys.sysprocesses WHERE dbid=DB_ID(N'SampleData')) 
  3.    BEGIN 
  4.      DECLARE @s NVARCHAR(1000) 
  5.      DECLARE myCur CURSOR FOR  
  6.      SELECT 'kill '+CAST(spid AS VARCHARFROM sys.sysprocesses WHERE dbid=DB_ID(N'SampleData'
  7.      OPEN myCur 
  8.      FETCH NEXT FROM myCur INTO @s 
  9.      WHILE @@FETCH_STATUS =0 
  10.      BEGIN 
  11.        EXEC(@S) 
  12.        FETCH NEXT FROM myCur INTO @s 
  13.      END 
  14.      CLOSE myCur 
  15.      DEALLOCATE myCur     
  16.    END      
  17.     
  18. ----新建數據庫 
  19. IF EXISTS(SELECT * FROM sys.sysdatabases WHERE dbid =db_id(N'SampleData')) 
  20. DROP DATABASE SampleData    
  21. ---IF DB_ID(N'SampleData') IS NOT NULL   
  22. ---   DROP DATABASE SampleData   
  23. CREATE DATABASE SampleData ON PRIMARY  
  24.   (NAME=N'SampleData', FILENAME=N'E:\Sample\SampleData.MDF',SIZE=10MB,MAXSIZE=UNLIMITED,FILEGROWTH=10%),   
  25.   FILEGROUP FG1 DEFAULT  
  26.   (NAME=N'SampleData_01',FILENAME=N'E:\Sample\SampleData_01.ndf',SIZE=10MB,MAXSIZE=UNLIMITED,FILEGROWTH=10%),   
  27.   (NAME=N'SampleData_02',FILENAME=N'E:\Sample\SampleData_02.ndf',SIZE=10MB,MAXSIZE=UNLIMITED,FILEGROWTH=10%) 
  28.   LOG ON  
  29.   (NAME=N'SampleData_Log',FILENAME=N'E:\Sample\SampleData_Log.ldf',SIZE=10MB,MAXSIZE=UNLIMITED,FILEGROWTH=10%)   
  30.   COLLATE Chinese_PRC_CI_AS   
  31. GO   
  32.  
  33. ----將數據庫的恢復模式設定爲【FULL】 
  34. IF NOT EXISTS(SELECT recovery_model FROM sys.databases WHERE database_id =DB_ID(N'SampleData'AND recovery_model=1) 
  35.    ALTER DATABASE SampleData SET RECOVERY FULL 
  36.  
  37. ----在數據庫中新建表[TestTable],並添加測試數據   
  38. USE SampleData  
  39. IF EXISTS(SELECT * FROM sys.objects WHERE object_id =OBJECT_ID(N'dbo.TestTable'AND type IN (N'U')) 
  40. DROP TABLE dbo.TestTable 
  41. CREATE TABLE dbo.TestTable 
  42. (ID       INT                   IDENTITY(1,1), 
  43.  Column1  VARCHAR(50)   NOT NULL
  44.  CONSTRAINT pk_testtableID PRIMARY KEY(ID)) 
  45.  GO 
  46.  
  47. INSERT INTO dbo.TestTable(Column1) VALUES('ROWA'
  48. INSERT INTO dbo.TestTable(Column1) VALUES('ROWB'
  49. INSERT INTO dbo.TestTable(Column1) VALUES('ROWC'
  50. INSERT INTO dbo.TestTable(Column1) VALUES('ROWD'
  51. INSERT INTO dbo.TestTable(Column1) VALUES('ROWE'
  52.  
  53. ----完整備份數據庫 
  54. BACKUP DATABASE [SampleData] TO  DISK = N'E:\SampleBack\SampleDataAllback.bak' WITH NOFORMAT, NOINIT,  NAME = N'SampleData-完整數據庫備份', SKIP, NOREWIND, NOUNLOAD,  STATS = 10 
  55. ----事務日誌備份(截斷日誌) 
  56. BACKUP LOG [SampleData] TO  DISK = N'E:\SampleBack\SampleDataLogBack.bak' WITH NOFORMAT, NOINIT,  NAME = N'SampleData-事務日誌 備份', SKIP, NOREWIND, NOUNLOAD,  STATS = 10 
  57.  
  58. ----在輔助數據庫服務器上執行還原 
  59. ------還原完整備份 
  60. --------RESTORE DATABASE [SampleData] FROM  DISK = N'E:\SampleBack\SampleDataAllback.bak' WITH  FILE = 1,  MOVE N'SampleData_01' TO N'E:\Sample\SampleData_1.ndf',  MOVE N'SampleData_02' TO N'E:\Sample\SampleData_2.ndf',  MOVE N'SampleData_Log' TO N'E:\Sample\SampleData_3.ldf',  NORECOVERY,  NOUNLOAD,  STATS = 10 
  61. --------GO 
  62. ------還原事務日誌備份 
  63. --------RESTORE LOG [SampleData] FROM  DISK = N'E:\SampleBack\SampleDataLogBack.bak' WITH  FILE = 1, NORECOVERY, NOUNLOAD,  STATS = 10 
  64.  
  65. ----說明:數據庫鏡像的兩種身份驗證方式:證書和Windows身份驗證 
  66.  
  67. ----使用基於證書的身份驗證方式設置數據庫鏡像 
  68. -------第一步:配置[出站連接] 
  69. ---------配置主機服務器的出站連接 
  70. ------------在master數據庫中創建數據庫主密鑰 
  71. USE master  
  72. CREATE MASTER KEY ENCRYPTION BY PASSWORD='[email protected]' 
  73. ------------爲主機服務器數據庫實例製作一個證書 
  74. USE master  
  75. CREATE CERTIFICATE HOST_A_Cert WITH SUBJECT='HOST_A certificate' 
  76. ------------使用該證書爲主機服務器數據庫實例創建一個鏡像端口 
  77. CREATE ENDPOINT Endpoint_Mirroring 
  78. STATE=STARTED  
  79. AS TCP (LISTENER_PORT=7024,LISTENER_IP=ALL
  80. FOR DATABASE_MIRRORING (AUTHENTICATION=CERTIFICATE HOST_A_Cert,ENCRYPTION=REQUIRED ALGORITHM AES,ROLE=ALL
  81. ------------備份HOST_A證書,並將其複製到輔助服務器、見證服務器 
  82. BACKUP CERTIFICATE HOST_A_Cert TO FILE='C:\HOST_A_Cert.cer' 
  83.  
  84. ---------配置輔助服務器的出站連接 
  85. ------------在master數據庫中創建數據庫主密鑰 
  86. USE master  
  87. CREATE MASTER KEY ENCRYPTION BY PASSWORD='[email protected]' 
  88. ------------爲輔助服務器數據庫實例製作一個證書 
  89. USE master  
  90. CREATE CERTIFICATE HOST_B_Cert WITH SUBJECT='HOST_B certificate' 
  91. ------------使用該證書爲輔助服務器數據庫實例創建一個鏡像端口 
  92. CREATE ENDPOINT Endpoint_Mirroring 
  93. STATE=STARTED  
  94. AS TCP (LISTENER_PORT=7024,LISTENER_IP=ALL
  95. FOR DATABASE_MIRRORING (AUTHENTICATION=CERTIFICATE HOST_B_Cert,ENCRYPTION=REQUIRED ALGORITHM AES,ROLE=ALL
  96. ------------備份HOST_B證書,並將其複製到主機服務器、見證服務器 
  97. BACKUP CERTIFICATE HOST_B_Cert TO FILE='C:\HOST_B_Cert.cer' 
  98.  
  99. ----------配置見證服務器的出站連接 
  100. USE master  
  101. CREATE MASTER KEY ENCRYPTION BY PASSWORD='[email protected]' 
  102. ---------爲見證服務器數據庫實例製作一個證書 
  103. USE master  
  104. CREATE CERTIFICATE HOST_C_Cert WITH SUBJECT='HOST_C_certificate' 
  105. ---------使用該證書爲見證服務器數據庫實例創建一個鏡像端口 
  106. CREATE ENDPOINT Endpoint_Mirroring 
  107. STATE=STARTED 
  108. AS TCP (LISTENER_PORT=7024,LISTENER_IP=ALL
  109. FOR DATABASE_MIRRORING (AUTHENTICATION=CERTIFICATE HOST_C_Cert,ENCRYPTION=REQUIRED ALGORITHM AES,ROLE=ALL
  110. ---------備份HOST_C證書,並將其複製到主機服務器、輔助服務器 
  111. BACKUP CERTIFICATE HOST_C_Cert TO FILE='C:\HOST_C_Cert.cer' 
  112.  
  113. -------第二步:配置[入站連接] 
  114. ---------配置主機服務器的入站連接 
  115. ------------在主機服務器上爲鏡像服務器創建一個登錄名 
  116. USE master  
  117. CREATE LOGIN HOST_B_Login WITH PASSWORD='[email protected]' 
  118. ------------創建一個該登錄名的用戶 
  119. CREATE USER HOST_B_User FROM LOGIN HOST_B_Login  
  120. ------------使用從鏡像服務器複製過來的證書與此用戶關聯 
  121. CREATE CERTIFICATE HOST_B_Cert AUTHORIZATION HOST_B_User FROM FILE='C:\HOST_B_Cert.cer' 
  122. ------------授予對遠程鏡像端點的登錄名的 CONNECT 權限 
  123. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_Login] 
  124. ------------在主機服務器上爲見證服務器創建一個登錄名 
  125. USE master  
  126. CREATE LOGIN HOST_C_Login WITH PASSWORD='[email protected]' 
  127. ------------創建一個該登錄名的用戶 
  128. CREATE USER HOST_C_User FROM LOGIN HOST_C_Login  
  129. ------------使用從見證服務器複製過來的證書與此用戶關聯 
  130. CREATE CERTIFICATE HOST_C_Cert AUTHORIZATION HOST_C_User FROM FILE='C:\HOST_C_Cert.cer' 
  131. ------------授予對遠程鏡像端點的登錄名的CONNECT權限 
  132. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_C_Login] 
  133.  
  134. ---------配置輔助服務器的入站連接 
  135. ------------在輔助服務器上爲主機服務器創建一個登錄名 
  136. USE master  
  137. CREATE LOGIN HOST_A_Login WITH PASSWORD='[email protected]' 
  138. ------------創建一個該登錄名的用戶 
  139. CREATE USER HOST_A_User FROM LOGIN HOST_A_Login  
  140. ------------使用從主機服務器複製過來的證書與此用戶關聯 
  141. CREATE CERTIFICATE HOST_A_Cert AUTHORIZATION HOST_A_User FROM FILE='C:\HOST_A_Cert.cer' 
  142. ------------授予對遠程鏡像端點的登錄名的 CONNECT 權限 
  143. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_Login] 
  144. ------------在輔助服務器上爲見證服務器創建一個登錄名 
  145. USE master  
  146. CREATE LOGIN HOST_C_Login WITH PASSWORD='[email protected]' 
  147. ------------創建一個該登錄名的用戶 
  148. CREATE USER HOST_C_User FROM LOGIN HOST_C_Login  
  149. ------------使用從見證服務器複製過來的證書與此用戶關聯 
  150. CREATE CERTIFICATE HOST_C_Cert AUTHORIZATION HOST_C_User FROM FILE='C:\HOST_C_Cert.cer' 
  151. ------------授予對遠程鏡像端點的登錄名的CONNECT權限 
  152. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_C_Login] 
  153.  
  154. ---------配置見證服務器的入站連接 
  155. ------------在見證服務器上爲主機服務器創建一個登錄名 
  156. USE master  
  157. CREATE LOGIN HOST_A_Login WITH PASSWORD='[email protected]' 
  158. ------------創建一個該登錄名的用戶 
  159. CREATE USER HOST_A_User FROM LOGIN HOST_A_Login  
  160. ------------使用從主機服務器複製過來的證書與此用戶關聯 
  161. CREATE CERTIFICATE HOST_A_Cert AUTHORIZATION HOST_A_User FROM FILE='C:\HOST_A_Cert.cer' 
  162. ------------授予對遠程鏡像端點的登錄名的 CONNECT 權限 
  163. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_Login] 
  164. ------------在見證服務器上爲輔助服務器創建一個登錄名 
  165. USE master  
  166. CREATE LOGIN HOST_B_Login WITH PASSWORD='[email protected]' 
  167. ------------創建一個該登錄名的用戶 
  168. CREATE USER HOST_B_User FROM LOGIN HOST_B_Login  
  169. ------------使用從見證服務器複製過來的證書與此用戶關聯 
  170. CREATE CERTIFICATE HOST_B_Cert AUTHORIZATION HOST_B_User FROM FILE='C:\HOST_B_Cert.cer' 
  171. ------------授予對遠程鏡像端點的登錄名的CONNECT權限 
  172. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_Login] 
  173.  
  174. -------第三步:配置鏡像夥伴 
  175. ---------在鏡像服務器上將主機服務器設置爲夥伴 
  176. ALTER DATABASE SampleData SET PARTNER='TCP://S1:7024' 
  177. ---------在主機服務器上將鏡像服務器設置爲夥伴 
  178. ALTER DATABASE SampleData SET PARTNER='TCP://S2:7024' 
  179. ---------在主機服務器上設置見證服務器 
  180. ALTER DATABASE SampleData SET WITNESS='TCP://S2:7024' 
  181. GO 
  182.  
  183. -----以下代碼是在沒有見證服務器的情況下實現手動故障轉移 
  184. ---------若要在高性能模式下配置此會話,在主體服務器實例上,將事務安全性設置爲 OFF。 
  185. ALTER DATABASE SampleData SET PARTNER SAFETY OFF 
  186. ---------若要在高安全模式下配置些會話,在主體服務器實例上,將事務安全性設置爲FULL 
  187. ALTER DATABASE SampleData SET PARTNER SAFETY FULL 
  188.  
  189. ---------在高性能模式下,使用下列語句在鏡像服務器上強制執行實現故障轉移,會丟失數據 
  190. ALTER DATABASE SampleData SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS 
  191. ---------在高安全模式下,使用下列語句實現手工故障轉移 
  192. ALTER DATABASE SampleData SET PARTNER FAILOVER 
  193.  
  194. ---------原來的主服務器恢復,可以繼續工作,需要重新設定鏡像 
  195. ---------在輔助服務器上執行: 
  196. USE master 
  197. ALTER DATABASE SampleData SET PARTNER RESUME  --恢復鏡像 
  198. ALTER DATABASE SampleData SET PARTNER FAILOVER --切換主備 
  199.  
  200.  
  201.  
  202. ----使用基於Windows的身份驗證方式設置數據庫鏡像 
  203. ------------------------------------------------------------ 
  204. -- 主機服務器               S1                S1\S1User   -- 
  205. -- 輔助服務器               S2                S2\S2User   -- 
  206. -- 見證服務器               S3                S3\S3User   -- 
  207. ------------------------------------------------------------ 
  208. ---在主機服務器上創建一個鏡像端點 
  209. CREATE ENDPOINT Endpoint_Mirroring STATE=STARTED AS TCP (LISTENER_PORT=7024) FOR DATABASE_MIRRORING (ROLE=ALL
  210. ---在主機服務器上爲輔助服務器創建一個登錄 
  211. CREATE LOGIN [S2\S2User] FROM WINDOWS 
  212. ---授予對遠程鏡像端點的登錄名的CONNECT權限 
  213. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [S2\S2User] 
  214. ---在主機服務器上爲見證服務器創建一個登錄 
  215. CREATE LOGIN [S3\S3User] FROM WINDOWS 
  216. ---授予對遠程鏡像端點的登錄名的CONNECT權限 
  217. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [S3\S3User] 
  218.  
  219. ---在輔助服務器上創建一個鏡像端點 
  220. CREATE ENDPOINT Endpoint_Mirroring STATE=STARTED AS TCP (LISTENER_PORT=7024) FOR DATABASE_MIRRORING (ROLE=ALL
  221. ---在輔助服務器上爲主機服務器創建一個登錄 
  222. CREATE LOGIN [S1\S2User] FROM WINDOWS 
  223. ---授予對遠程鏡像端點的登錄名的CONNECT權限 
  224. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [S1\S2User] 
  225. ---在輔助服務器上爲見證服務器創建一個登錄 
  226. CREATE LOGIN [S3\S3User] FROM WINDOWS 
  227. ---授予對遠程鏡像端點的登錄名的CONNECT權限 
  228. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [S3\S3User] 
  229.  
  230. ---在見證服務器上創建一個鏡像端點 
  231. CREATE ENDPOINT Endpoint_Mirroring STATE=STARTED AS TCP (LISTENER_PORT=7024) FOR DATABASE_MIRRORING (ROLE=ALL
  232. ---在見證服務器上爲主機服務器創建一個登錄 
  233. CREATE LOGIN [S1\S1User] FROM WINDOWS 
  234. ---授予對遠程鏡像端點的登錄名的CONNECT權限 
  235. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [S1\S1User] 
  236. ---在見證服務器上爲輔助服務器創建一個登錄 
  237. CREATE LOGIN [S2\S2User] FROM WINDOWS 
  238. ---授予對遠程鏡像端點的登錄名的CONNECT權限 
  239. GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [S2\S2User] 
  240.  
  241. ----配置鏡像夥伴 
  242. ---------在鏡像服務器上將主機服務器設置爲夥伴 
  243. ALTER DATABASE SampleData SET PARTNER='TCP://S1:7024' 
  244. ---------在主機服務器上將鏡像服務器設置爲夥伴 
  245. ALTER DATABASE SampleData SET PARTNER='TCP://S2:7024' 
  246. ---------在主機服務器上設置見證服務器 
  247. ALTER DATABASE SampleData SET WITNESS='TCP://S2:7024' 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章