管理sql 2008資料庫鏡像的工具?

管理sql 2008資料庫鏡像的工具?

我們將把單一 sql 2000 實例上的大約 20 個資料庫遷移到具有資料庫鏡像的 sql 2008 r2 環境。

我正在尋找的是一個工具或腳本,可以幫助我輕鬆管理這 20db 到這個新鏡像環境的轉換和管理。設定每個資料庫有很多步驟,我希望盡可能自動化。

編輯:以下是我手動執行的步驟:

  1. 從舊的 sql 2000 伺服器到新的 sql 2008 伺服器建立相同的使用者名稱/密碼。然後將這些使用者/密碼同步到具有相同 SSID 的其他 sql 2008 伺服器上,以便當我們進行資料庫備份和還原時它們會匹配。
  2. 對每個 sql 2000 資料庫進行備份。
  3. 將它們複製到伺服器 A。
  4. 將備份還原到伺服器A。
  5. 從伺服器a備份,複製到伺服器b,在那裡恢復。
  6. 執行鏡像「配置安全性」精靈。
  7. 開始鏡像。

我喜歡能夠編寫這個腳本或有一個工具可以為我完成這個任務。謝謝!保羅

答案1

我建立了一系列批次檔和 SQL 腳本來執行以下步驟。我只包含了鏡像內容的腳本,但其他引用的 SQL 腳本都是非常基本的 SQL 命令(恢復資料庫腳本除外,由於我的實現方式,該腳本有點棘手),創建它們將為您提供機會更改SQLCMD 模式變數。如果您想在 Twitter (@jcumberland) 上直接給我發送訊息並提供您的電子郵件地址,我可以向您發送全套腳本。我也刪除了檔案名稱的完整路徑。

  • 設定資料庫的復原模式
  • 刪除鏡像
  • 刪除鏡像資料庫
  • 備份資料庫
  • 備份日誌
  • 複製bak文件
  • 複製 trn 文件
  • 恢復資料庫備份
  • 復原日誌備份
  • 刪除bak文件
  • 刪除 trn 文件
  • 在主體和鏡像之間設定鏡像
/*------------------------------------------------ ------*/
-- 替換這些值
/*------------------------------------------------ ------*/











/*------------------------------------------------ ------*/
-- 批次檔 1,呼叫實用程式批次文件
/*------------------------------------------------ ------*/
@迴聲關閉

設定主主機=
設定鏡像主機=
設定 INST=
設定驅動器=
設定 DRTARGETDIR="%DRIVE%:\MSSQL.1\MSSQL\DATA\"
設定 LOGDIR="%DRIVE%:\MSSQL.1\MSSQL\DATA\"
設定連接埠=
設定 PRIMARYINST=%PRIMARYHOST%\%INST%
設定 MIRRORINST=%MIRRORHOST%\%INST%

@迴聲


呼叫 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 -- 從主庫中刪除備份文件
刪除 \\%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 備份路徑=%6 -v 資料庫=%8

rem -- 從鏡像中刪除備份文件
刪除 %6\*.bak
刪除 %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
/*------------------------------------------------ ------*/


/*------------------------------------------------ -----*/
-- 運行在主體上
/*------------------------------------------------ -----*/
:連結$(主體)

-- 建立端點
如果不存在(從 sys.endpoints 選擇 *,其中 name = 'Mirroring')
開始
    建立端點鏡像
    授權 []
    狀態 = 以 TCP 啟動(
        監聽器連接埠 = $(連接埠)
        ,LISTENER_IP = 全部
    對於資料鏡像(
        角色=合作夥伴
        ,身份驗證 = WINDOWS 協商
        ,加密 = 所需演算法 RC4
結尾

/*------------------------------------------------ -----*/
-- 在鏡像上運行
/*------------------------------------------------ -----*/
:連接$(鏡像)

-- 建立端點
如果不存在(從 sys.endpoints 選擇 *,其中 name = 'Mirroring')
開始
    建立端點鏡像
    授權 []
    狀態 = 以 TCP 啟動(
        監聽器連接埠 = $(連接埠)
        ,LISTENER_IP = 全部
    對於資料鏡像(
        角色=合作夥伴
        ,身份驗證 = WINDOWS 協商
        ,加密 = 所需演算法 RC4
結尾

-- 建立鏡像合作關係
更改資料庫 [$(DATABASE_NAME)] SET PARTNER = N'TCP://$(PRINCIPAL_DNS):$(PORT)'

-- 刪除鏡像監控
如果存在(select * from msdb..sysjobs where [name] ='Database Mirroring Monitor Job')
開始
    EXEC sp_dbmmonitordropmonitoring
結尾

-- 設定鏡像監控
EXEC sys.sp_dbmmonitoraddmonitoring -- 預設為 1 分鐘


/*------------------------------------------------ -----*/
-- 運行在主體上
/*------------------------------------------------ -----*/
:連結$(主體)

-- 建立鏡像合作關係
更改資料庫 [$(DATABASE_NAME)] SET PARTNER = N'TCP://$(MIRROR_DNS):$(PORT)'

-- 刪除鏡像監控
如果存在(select * from msdb..sysjobs where [name] ='Database Mirroring Monitor Job')
開始
    EXEC sp_dbmmonitordropmonitoring
結尾

-- 設定鏡像監控
EXEC sys.sp_dbmmonitoraddmonitoring -- 預設為 1 分鐘






/*------------------------------------------------ ------*/
-- DRMirroringRemove.sql
/*------------------------------------------------ ------*/
如果存在( select * from sys.database_mirroring where db_name(database_id) = '$(DATABASE)' andmirroring_guid is not null )
開始
    更改資料庫 [$(DATABASE)] 將夥伴設定為關閉
結尾

等待延遲'00:00:10'







/*------------------------------------------------ ------*/
-- DRMirroringRemoveMirror.sql
/*------------------------------------------------ ------*/
如果存在( select * from sys.database_mirroring where db_name(database_id) = '$(DATABASE)' andmirroring_guid is not null )
開始
    更改資料庫 [$(DATABASE)] 將夥伴設定為關閉
結尾

等待延遲'00:00:10'

刪除資料庫 [$(資料庫)]

答案2

內建怎麼樣資料庫鏡像監控器

相關內容