天天看點

SQL Server 移動資料庫

移動系統資料庫在下列情況下可能很有用:

故障恢複。例如,資料庫處于可疑模式下或因硬體故障而關閉。

計劃的重定位。

為預定的磁盤維護操作而進行的重定位。

<a>預先安排的重定位與預定的磁盤維護過程</a>

<a></a>

若要将移動系統資料庫資料或日志檔案的操作作為預先安排的重定位或預定的維護操作的一部分,請執行下列步驟。此過程适用于除 master 和 Resource 資料庫以外的所有系統資料庫。

對于要移動的每個檔案,請運作以下語句。

将檔案移動到新位置。

通過運作以下查詢來驗證檔案更改。

通過運作以下查詢,驗證是否已為 msdb 資料庫啟用 Service Broker。

<a>故障恢複過程</a>

如果由于硬體故障而必須移動檔案,則請執行下列步驟,将檔案重新定位到一個新位置。此過程适用于除 master 和 Resource 資料庫以外的所有系統資料庫。

 重要提示

如果資料庫無法啟動,即處于可疑模式下或處于未恢複狀态,則隻有 sysadmin 固定角色的成員才可以移動該檔案。

如果啟動了 SQL Server 執行個體,則将其停止。

通過在指令提示符下輸入下列指令之一,在僅 master 恢複模式下啟動 SQL Server 執行個體。在這些指令中指定的參數區分大小寫。如果未按所示方式指定參數,則指令會失敗。

對于預設的 (MSSQLSERVER) 執行個體,請運作以下指令:

對于命名執行個體,請運作以下指令:

對于要移動的每個檔案,請使用 sqlcmd 指令或 SQL Server Management Studio 運作以下語句。

退出 sqlcmd 實用工具或 SQL Server Management Studio。

停止 SQL Server 執行個體。例如,運作 NET STOP MSSQLSERVER。

重新啟動 SQL Server 執行個體。例如,運作 NET START MSSQLSERVER。

<a>移動 master 資料庫</a>

若要移動 master 資料庫,請按下列步驟進行操作。

在“開始”菜單中,依次指向“所有程式”、Microsoft SQL Server 和“配置工具”,再單擊 SQL

Server 配置管理器。

在“SQL Server 服務”節點中,右鍵單擊 SQL Server 執行個體(如 SQL Server (MSSQLSERVER)),并選擇“屬性”。

在“SQL Server (執行個體名) 屬性”對話框中,單擊“進階”頁籤。

編輯“引導參數”值以指向 master 資料庫資料和日志檔案的計劃位置,然後單擊“确定”。可以選擇移動錯誤日志檔案。

資料檔案的參數值必須跟在 -d 參數的後面,日志檔案的參數值必須跟在 -l 參數的後面。下面的示例顯示 master 資料和日志檔案預設位置的參數值。

如果 master 資料和日志檔案預先安排的重定位是 E:\SQLData,則參數值将更改為:

通過右鍵單擊執行個體名稱并選擇“停止”,停止 SQL Server 執行個體。

将 master.mdf 和 mastlog.ldf 檔案移動到新位置。

重新啟動 SQL Server 執行個體。

通過運作以下查詢,驗證 master 資料庫的檔案更改。

<a>移動 Resource 資料庫</a>

Resource 資料庫的位置為 &lt;drive&gt;:\Program Files\Microsoft SQL Server\MSSQL10_50.&lt;instance_name&gt;\MSSQL\Binn\。無法移動該資料庫。

<a>示例</a>

下面的示例将 tempdb 資料和日志檔案移動到一個新位置,作為預先安排的重定位的一部分。

注意

由于每次啟動 SQL Server 執行個體時都将重新建立 tempdb,是以不必實際移動資料和日志檔案。在步驟 3 中重新啟動服務時,将在新位置中建立這些檔案。在重新啟動服務之前,tempdb 将繼續使用現有位置中的資料和日志檔案。

确定 tempdb 資料庫的邏輯檔案名稱以及在磁盤上的目前位置。

使用 ALTER DATABASE 更改每個檔案的位置。

停止再重新啟動 SQL Server 的執行個體。

驗證檔案更改。

将 tempdb.mdf 和 templog.ldf 檔案從其原始位置删除。

SQL Server 資料庫引擎的某些功能改變了資料庫引擎在資料庫檔案中存儲資訊的方式。這些功能僅限于特定的 SQL Server 版本。不能将包含這些功能的資料庫移到不支援這些功能的 SQL Server 版本。使用 sys.dm_db_persisted_sku_features 動态管理視圖可列出目前資料庫中啟用的所有特定于版本的功能。

<a>計劃的重定位過程</a>

若要将移動資料或日志檔案作為計劃的重定位的一部分,請執行下列步驟:

運作以下語句。

對于已移動的每個檔案,請運作以下語句。

<a>計劃的磁盤維護的重定位</a>

若要将重定位檔案作為計劃的磁盤維護過程的一部分,請執行下列步驟:

如果由于硬體故障而必須移動檔案,則請執行下列步驟,将檔案重新定位到一個新位置。

通過在指令提示符下輸入下列指令之一,在僅 master 恢複模式下啟動 SQL Server 執行個體。

對于預設的 (MSSQLSERVER) 執行個體,請運作以下指令。

對于命名執行個體,請運作以下指令。

停止 SQL Server 執行個體。

啟動 SQL Server 執行個體。例如,運作 NET START MSSQLSERVER。

通過運作以下查詢來驗證檔案更改。SELECT name, physical_name AS CurrentLocation, state_desc

<a>移動全文目錄</a>

若要移動全文目錄,請執行下列步驟。請注意,指定新的目錄位置時,隻指定 new_path,而不是指定 new_path/os_file_name。

将全文目錄移動到新位置。

另外,也可以使用 CREATE DATABASE 語句的 FOR ATTACH 子句移動全文目錄。下面的示例在 AdventureWorks2008R2 資料庫中建立一個全文目錄。若要将全文目錄移動到新位置,請分離 AdventureWorks2008R2 資料庫,并将全文目錄從實體意義上移動到新位置。然後附加資料庫,并指定全文目錄的新位置。

下面的示例将 AdventureWorks2008R2 日志檔案移動到一個新位置,作為計劃的重定位的一部分。