SQL SERVER 移動系統數據庫

移動系統數據庫在下列狀況下可能頗有用:數據庫

  • 故障恢復。例如,數據庫處於可疑模式下或因硬件故障而關閉。工具

  • 計劃的重定位。spa

  • 爲預約的磁盤維護操做而進行的重定位。日誌

移動 Master 數據庫                                                                                                                                                                         
code

  1. 「開始」菜單中,依次指向「全部程序」Microsoft SQL Server 和「配置工具」,再單擊 SQL Server 配置管理器blog

  2. 「SQL Server 服務」節點中,右鍵單擊 SQL Server 實例(如 SQL Server (MSSQLSERVER)),並選擇「屬性」ip

  3. 「SQL Server (實例名) 屬性」對話框中,單擊「高級」選項卡。it

  4. 編輯「引導參數」值以指向 master 數據庫數據和日誌文件的計劃位置,而後單擊「肯定」。能夠選擇移動錯誤日誌文件。io

    數據文件的參數值必須跟在 -d 參數的後面,日誌文件的參數值必須跟在 -l 參數的後面。下面的示例顯示 master 數據和日誌文件默認位置的參數值。ast

    -dC:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\
    master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\
    LOG\ERRORLOG;-lC:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\
    DATA\mastlog.ldf
    

    若是 master 數據和日誌文件預先安排的重定位是 E:\SQLData,則參數值將更改成:

    -dE:\SQLData\master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\LOG\ERRORLOG;-lE:\SQLData\mastlog.ldf
    
  5. ALTER DATABASE [master] MODIFY FILE(NAME='tempdev',FILENAME='E:\SQLData\master.mdf')

  6. 經過右鍵單擊實例名稱並選擇「中止」,中止 SQL Server 實例。
  7. 將 master.mdf 和 mastlog.ldf 文件移動到新位置(這個位置就是上面參數所指定的位置,即:E:\SQLData)。

  8. 從新啓動 SQL Server 實例。

  9. 經過運行如下查詢,驗證 master 數據庫的文件更改。

    SELECT name, physical_name AS CurrentLocation, state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID('master');
    GO

移動 Resource 數據庫                                                                                                                                                                    

Resource 數據庫的位置爲 <drive>:\Program Files\Microsoft SQL Server\MSSQL10_50.<instance_name>\MSSQL\Binn\。沒法移動該數據庫。

移動其它系統數據庫                                                                                                                                                                         

注意:因爲每次啓動 SQL Server 實例時都將從新建立 tempdb,因此沒必要實際移動數據和日誌文件。在從新啓動服務時,將在新位置中建立這些文件。在從新啓動服務以前,tempdb 將繼續使用現有位置中的數據和日誌文件。

如下爲移動系統數據庫步驟:
1. 肯定系統數據庫的邏輯文件名稱以及在磁盤上的當前位置。

-- 如tempdb
SELECT name, physical_name AS CurrentLocation
FROM sys.master_files
WHERE database_id = DB_ID(N'tempdb');
GO

2. 使用 ALTER DATABASE 更改每一個文件的位置。

複製代碼
USE master;
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = 'E:\SQLLog\templog.ldf');
GO
複製代碼


3. 中止服務並移動文件到更改位置

4. 從新啓動 SQL Server 的實例服務。
5. 驗證文件更改。

SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files

 再將系統文件,如 tempdb.mdf 和 templog.ldf 文件從其原始位置刪除。

備一個腳本,能夠對多實例的時候使用:

select 'ALTER DATABASE ['+db_name([database_id])+'] MODIFY FILE(NAME='''+name+''',FILENAME='''+REPLACE([physical_name],'C:\Program Files\Microsoft SQL Server\','E:\SQLData\')+''')' from sys.master_files
where physical_name like 'c:%'
AND [database_id]<>1
相關文章
相關標籤/搜索