Sql-Server

複製數據庫移動

  • December 13, 2015

我有 2TB 的數據庫參與 SQL Server 事務複製。我想以最少的停機時間將發布者數據庫文件移動到較新的磁碟,並且不會中斷複製。請讓我知道這是否可能。我的數據庫在 SQL Server 2008 R2 EE 版本上。如果您需要更多詳細資訊,請告訴我。

如果需要最大限度地減少停機時間,則使用本機 SQL 完整備份、差異備份和日誌備份並還原到新磁碟,使用 NORECOVERY 進行還原,並使用不同的數據庫名稱。這與將數據庫移動到新伺服器相同(您只需為數據庫使用備用臨時名稱)。在您最終停機期間,停止應用程序和所有 repl 作業,對現有數據庫執行日誌尾備份,在新數據庫上恢復並恢復。分離舊數據庫,將新數據庫重命名為原始數據庫名稱,重置 DBO(以及可信賴的、clr 和服務代理,如果它們在原始數據庫上啟用),重新啟動回復作業。

我想以最少的停機時間將發布者數據庫文件移動到較新的磁碟,並且不會中斷複製。

由於您想將數據庫移動到不同的磁碟,因此停機時間應該不會那麼長。

以下是您應該遵循的步驟:

  • 停止日誌閱讀器代理/作業並禁用它。下面的腳本將為您生成命令。
SELECT 'exec msdb..sp_stop_job N'''+ name+'''' + ';'+'exec msdb..sp_update_job @job_name = N'''+ name+''', @enabled = 0' as 'CommandToStop/Disable Job', [id]
 ,[name]
 ,[publisher_id]
 ,[publisher_db]
 ,[publication]
 ,[local_job]
 ,[job_id]
FROM [distribution].[dbo].[MSlogreader_agents]
where publisher_db = 'AdventureWorksDW2012' -- change here !
  • 使用 . 修改物理數據庫文件位置ALTER DATABASE .. MODIFY FILE。這將修改系統表中的名稱。
  • 使數據庫離線並將數據庫文件物理移動到新目標。
  • 線上數據庫
  • 啟用並啟動日誌讀取器代理。

您可以編寫腳本並自動化執行上述所有步驟。您可以參考我編寫的腳本來重命名數據庫 - 邏輯和物理,並根據您的需要進行調整

引用自:https://dba.stackexchange.com/questions/123441