Sql-Server
如何將 100 個數據庫從一台 MS-SQL 2008 伺服器遷移到另一台?(尋找自動化)
首先讓我說我不是 DBA,但我負責將不到 100 個 MS-SQL 2008 DB 從我們目前的開發伺服器移到新的/更好/更快的開發伺服器。
由於這只是一個本地開發伺服器,暫時停機是可以接受的,但我正在尋找一種方法來移動所有數據庫(最好是批量)。
我知道我可以對每一個進行備份,然後在新伺服器上恢復它,但考慮到數據庫的數量,我正在尋找一種更有效的方法。
我不反對學習新軟體、編寫程式碼或任何其他要求,只要它加快了程序。
- 移動文件後,以下腳本將生成 T-SQL 來創建數據庫。在其他任何事情之前執行此步驟很重要。
SELECT 'create database ' + QUOTENAME(DB_NAME(d.database_id)) + ' on ' + STUFF(( SELECT ',(name = ''' + name + ''', filename = ''' + [physical_name] + ''')' FROM sys.[master_files] AS mf WHERE [mf].[database_id] = d.[database_id] FOR XML PATH('') ), 1, 1, '') + ' for attach' FROM sys.[databases] AS d WHERE d.name NOT IN ('master', 'model', 'tempdb', 'msdb')
如果新伺服器上數據文件的路徑與舊伺服器上的不同,您可以在腳本中編輯文件名(或者在查詢中做一些更有趣的事情來自動為您完成)。
2)下面的程式碼會生成一個T-SQL腳本,將所有非系統數據庫的數據庫狀態設置為離線。如果您的計劃是將原始伺服器設置為離線(這不是一個壞主意),那麼此步驟是不必要的,因為伺服器不會使用數據庫文件。
select 'alter database ' + quotename(name) + ' set offline' from sys.[databases] as d WHERE d.name NOT IN ('master', 'model', 'tempdb', 'msdb')
- 通過關閉原始伺服器或在原始伺服器上執行步驟 2 中的 T-SQL 使數據庫離線
4)將文件移動到新伺服器
- 在新伺服器上執行步驟 2 中的腳本。