Sql-Server

將數據庫恢復到新伺服器的正確方法

  • September 20, 2019

我們正在從 sql server 2008 遷移到 2017 並將執行以下操作

  1. 在新機器上安裝sql server 2017
  2. 備份舊伺服器上的所有數據庫
RESTORE DATABASE DbName FROM DISK = 'C:\temp\Live\dbname.bak'
WITH
  MOVE 'DbName' TO 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\DbName.mdf',
  MOVE 'DbName_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\DbName_log.ldf'

如果可能,我想避免使用該WITH部分,但這需要我先創建一個空白數據庫並將其版本設置為 2008,然後才能正確恢復。

我想我要問的是,在沒有任何數據庫的伺服器上獲取 .bak 文件並將其還原為 db 的最佳方法是什麼。

寧願在不附加/分離的情況下執行此操作

我有大量的數據庫,所以我將創建一個腳本來一次完成所有這些。

我不確定你的問題是什麼。

  • 當您恢復數據庫時,數據 (mdf) 和日誌 (ldf) 文件已經在磁碟的某個地方。WITH MOVE只是告訴 SQL 把它們放在哪裡。

  • 你不能有一個沒有數據庫的 SQL 伺服器,每次安裝都會有 4 個開箱即用的數據庫,master, msdb, model& tembdb,它們是系統數據庫,它們每個都有 mdf 和 ldf 文件,就像你要恢復的使用者數據庫一樣.

  • 正如 scsimon 在評論中提到的那樣,您可能不希望您的 SQL 文件位於 C 驅動器上,向我解釋的最佳做法是為 SQL 提供 4 個驅動器,

    • 數據驅動器 (mdf)
    • 日誌文件驅動器 (ldf)
    • Tempdb(用於 tempdb 的 mdf 和 ldf)
    • 備份(bak & trn,應至少每晚複製一次)

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