Sql-Server
管理sql 2008數據庫鏡像的工具?
我們將把大約 20 個位於單個 sql 2000 實例上的數據庫遷移到具有數據庫鏡像的 sql 2008 r2 環境中。
我正在尋找的是一種工具或腳本,它可以幫助我輕鬆地將那些 20db 轉換和管理到這個新的鏡像環境中。設置每個數據庫有很多步驟,我想盡可能地自動化。
編輯:以下是我手動執行的步驟:
- 從舊的 sql 2000 伺服器創建相同的使用者名/密碼到新的 sql 2008 伺服器。然後將這些使用者/密碼同步到另一個具有相同 SSID 的 sql 2008 伺服器上,這樣當我們進行數據庫備份和恢復時,它們就會匹配。
- 備份每個 sql 2000 db。
- 將它們複製到伺服器 A。
- 將備份恢復到伺服器 A。
- 從伺服器a備份,複製到伺服器b,在那裡恢復。
- 執行鏡像“配置安全”嚮導。
- 開始鏡像。
我喜歡能夠編寫腳本或擁有一個為我完成它的工具。謝謝!保羅
我創建了一系列批處理文件和 SQL 腳本來執行以下步驟。我只包含了鏡像的腳本,但其他引用的 SQL 腳本是非常基本的 SQL 命令(除了恢復數據庫腳本,由於我的實現方式,這個腳本有點棘手),創建它們會給你一個機會更改 SQLCMD 模式變數。如果您想使用您的電子郵件地址在 Twitter (@jcumberland) 上直接向我發送消息,我可以向您發送全套腳本。我也刪除了文件名上的完整路徑。
- 設置數據庫的恢復模式
- 刪除鏡像
- 刪除鏡像數據庫
- 備份數據庫
- 備份日誌
- 複製bak文件
- 複製 trn 文件
- 恢復數據庫備份
- 恢復日誌備份
- 刪除後面的文件
- 刪除刺文件
- 在主體和鏡像之間設置鏡像
/*------------------------------------------------------*/ -- 替換這些值 /*------------------------------------------------------*/ /*------------------------------------------------------*/ -- 批處理文件 1,呼叫實用程序批處理文件 /*------------------------------------------------------*/ @echo 關閉 設置 PRIMARYHOST= 設置鏡像= 設置安裝= 設置驅動器= 設置 DRTARGETDIR="%DRIVE%:\MSSQL.1\MSSQL\DATA\" 設置 LOGDIR="%DRIVE%:\MSSQL.1\MSSQL\DATA\" 設置埠= 設置 PRIMARYINST=%PRIMARYHOST%\%INST% 設置 MIRRORINST=%MIRRORHOST%\%INST% @echo on 呼叫 drdbsetup.bat %PRIMARYHOST% %MIRRORHOST% %PRIMARYINST% %MIRRORINST% %DRIVE% %DRTARGETDIR% %PORT% %LOGDIR% 暫停 /*------------------------------------------------------*/ -- 批處理文件 2 - 呼叫 SQL 腳本 /*------------------------------------------------------*/ rem -- 將恢復模式設置為完全 sqlcmd /E /S%3 -i SetRecoveryMode.sql -v DATABASE="%8" rem -- 刪除鏡像 sqlcmd /E /S%3 -i MirroringRemove.sql -v DATABASE="%8" sqlcmd /E /S%4 -i MirroringRemoveMirror.sql -v DATABASE="%8" rem -- 完全備份 sqlcmd /E /S%3 -i BackupDatabaseFull.sql -v BACKUPPATH="%5:\" -v DATABASE=%8 rem -- 日誌備份 sqlcmd /E /S%3 -i BackupDatabaseLog.sql -v BACKUPPATH="%5:\" -v DATABASE=%8 rem -- 複製備份文件到鏡像 複製 \\%1\%5$\*.bak %6 /y 複製\\%1\%5$\*.trn%6/y rem -- 從主目錄中刪除備份文件 del \\% 1 \% 5 $ \ *. bak \\% 1 \% 5 $ \ *.trn rem -- 從備份目錄恢復數據庫 sqlcmd /E/S%4 -i RestoreDatabase.sql -v BKDIR =%6 -v DATADIR =%6 -v LOGDIR =%9 rem -- 恢復數據庫日誌 sqlcmd /E /S%4 -i RestoreLog.sql -v BACKUPPATH=%6 -v DATABASE=%8 rem -- 從鏡像中刪除備份文件 del%6\*.bak of%6\*.trn rem -- 設置鏡像 sqlcmd /E /S%4 -i MirroringSetup.sql -v PRINCIPAL="%3" -v MIRROR="%4" -v PRINCIPAL_DNS="%1." -v MIRROR_DNS="%2.yourdomain.local" -v DATABASE_NAME="%8" -v PORT=%7 /*------------------------------------------------------*/ -- 鏡像設置.sql /*------------------------------------------------------*/ /*-----------------------------------------------------*/ -- 在主體上執行 /*-----------------------------------------------------*/ :connect $(PRINCIPAL) 走 -- 創建端點 如果不存在(選擇 * from sys.endpoints where name = 'Mirroring') 開始 創建端點鏡像 授權 [] 狀態 = 以 TCP 啟動( LISTENER_PORT = $(PORT) ,LISTENER_IP = 全部 ) FOR DATA_MIRRORING ( 角色 = 合作夥伴 ,AUTHENTICATION = WINDOWS 協商 ,加密 = 所需算法 RC4 ) 結尾 走 /*-----------------------------------------------------*/ -- 在鏡像上執行 /*-----------------------------------------------------*/ :connect $(鏡像) 走 -- 創建端點 如果不存在(選擇 * from sys.endpoints where name = 'Mirroring') 開始 創建端點鏡像 授權 [] 狀態 = 以 TCP 啟動( LISTENER_PORT = $(PORT) ,LISTENER_IP = 全部 ) FOR DATA_MIRRORING ( 角色 = 合作夥伴 ,AUTHENTICATION = WINDOWS 協商 ,加密 = 所需算法 RC4 ) 結尾 走 -- 建立鏡像夥伴關係 ALTER DATABASE [$(DATABASE_NAME)] SET PARTNER = N'TCP://$(PRINCIPAL_DNS):$(PORT)' 走 -- 移除鏡像監控 如果存在(select * from msdb..sysjobs where [name] ='Database Mirroring Monitor Job') 開始 執行 sp_dbmmonitordropmonitoring 結尾 走 -- 設置鏡像監控 EXEC sys.sp_dbmmonitoraddmonitoring -- 預設為 1 分鐘 走 /*-----------------------------------------------------*/ -- 在主體上執行 /*-----------------------------------------------------*/ :connect $(PRINCIPAL) 走 -- 建立鏡像夥伴關係 ALTER DATABASE [$(DATABASE_NAME)] SET PARTNER = N'TCP://$(MIRROR_DNS):$(PORT)' 走 -- 移除鏡像監控 如果存在(select * from msdb..sysjobs where [name] ='Database Mirroring Monitor Job') 開始 執行 sp_dbmmonitordropmonitoring 結尾 走 -- 設置鏡像監控 EXEC sys.sp_dbmmonitoraddmonitoring -- 預設為 1 分鐘 走 /*------------------------------------------------------*/ -- DRMirroringRemove.sql /*------------------------------------------------------*/ 如果存在(select * from sys.database_mirroring where db_name(database_id) = '$(DATABASE)' and mirroring_guid is not null) 開始 ALTER DATABASE [$(DATABASE)] 設置合作夥伴關閉 結尾 走 等待延遲'00:00:10' 走 /*------------------------------------------------------*/ -- DRMirroringRemoveMirror.sql /*------------------------------------------------------*/ 如果存在(select * from sys.database_mirroring where db_name(database_id) = '$(DATABASE)' and mirroring_guid is not null) 開始 ALTER DATABASE [$(DATABASE)] 設置合作夥伴關閉 結尾 走 等待延遲'00:00:10' 走 刪除數據庫 [$(DATABASE)] 走