Sql-Server

如何移動 SQL Server 數據庫文件?

  • June 30, 2021

我有一個數據庫,想將.mdf.ldf文件移動到另一個位置。但我不想停止MSSQLSERVER服務,也不想導出到另一台伺服器。

我怎樣才能做到這一點?

您不必停止 SQL Server 服務來移動數據庫文件,但您必須使特定數據庫離線。這是因為您無法在訪問文件時移動文件,並且使數據庫離線會阻止 SQL Server 應用程序使用這些文件。

移動它們的過程相當簡單。已經描述了分離/附加,但它幾乎沒有這麼複雜。

使用命令更改文件位置ALTER DATABASE

USE master; --do this all from the master
ALTER DATABASE foo
MODIFY FILE (name='DB_Data1'
            ,filename='X:\NewDBFile\DB_Data1.mdf'); --Filename is new location

請注意,您不需要在此命令中聲明舊位置。更改此路徑不會立即生效,但會在下次數據庫啟動時使用。

將數據庫設置為離線

(我WITH ROLLBACK IMMEDIATE過去常常把所有人踢出去並回滾所有目前打開的交易)

ALTER DATABASE foo SET OFFLINE WITH ROLLBACK IMMEDIATE;

將文件移動/複製到新位置

只需使用您喜歡的方法複製文件(點擊“n 拖動”、XCopy、Copy-Item、Robocopy)

使數據庫聯機

ALTER DATABASE foo SET ONLINE;

您可以在此處看到更詳細的描述。

MDF 和 LDF 文件受到保護,並且在數據庫聯機時無法移動。

如果您不介意停止數據庫工作,那麼您可以DETACH,移動文件,然後移動ATTACH它。

  • 右鍵點擊數據庫名稱
  • 選擇Properties
  • 轉到Files選項卡
  • **記下MDF 和 LDF 文件PathFileName**和。如果您不想最終搜尋失去的文件,此步驟很重要…
  • 右鍵點擊數據庫名稱
  • 選擇Tasks -> Detach
  • 將文件移動到您想要的位置
  • 右鍵點擊Databases伺服器的節點
  • 選擇Attach
  • 點擊Add按鈕
  • 指向新位置
  • 點擊OK

你現在應該沒事了。可以在此處找到有關該過程DETACH的資訊。ATTACH

在關於DETACH-如果將數據庫保持在同一 SQL Server 實例上,則ATTACH建議使用 using語句的連結。ALTER DATABASE移動使用者數據庫中的更多參考。

如果您想讓它在移動時保持執行,請執行BACKUP- RESTORE。在恢復過程中,您可以定義數據庫文件的新位置。

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