Skip to main content

從命令行備份和還原SQL Server數據庫

從命令行備份和還原SQL Server數據庫

Geoffrey Carr

SQL Server維護計劃中最重要的部分是定期備份數據庫。要備份數據庫,您不能簡單地複制數據庫的相應MDF和LDF文件,因為SQL Server對這些文件具有鎖定。相反,您需要通過SQL Server創建一個真正的備份文件。

雖然這可以通過在SQL Management Studio中開發維護計劃來完成,但SQL Server的免費Express版本不提供此接口。要解決此問題,您可以在以Windows管理員身份登錄時通過運行以下命令輕鬆備份數據庫:

SqlCmd -E -S Server_Name –Q “BACKUP DATABASE [Name_of_Database] TO DISK=’X:PathToBackupLocation[Name_of_Database].bak'”

以下示例將有所幫助。

默認SQL Server實例:

SqlCmd -E -S MyServer –Q “BACKUP DATABASE [MyDB] TO DISK=’D:BackupsMyDB.bak'”

命名的SQL Server實例:

SqlCmd -E -S MyServerMyInstance –Q “BACKUP DATABASE [MyDB] TO DISK=’D:BackupsMyDB.bak'”

上面創建了一個完全可恢復的“MyDB”備份副本到文件“D:BackupsMyDB.bak”,可以用於災難恢復。當然,您可以將備份位置和文件更改為您需要的任何內容,但請確保指定本地計算機上存在的文件夾位置。然後,可以將此備份文件複製到磁帶驅動器或其他外部備份位置。

常見的問題是“可以為映射的驅動器或UNC位置創建備份文件嗎?”,快速回答是否定的。原因是SQL Server Windows服務作為只能訪問本地計算機的用戶帳戶運行。您可以更改服務運行的帳戶,但出於安全原因,這是非常不鼓勵的。

從命令行還原數據庫備份

要從備份文件還原數據庫,只需使用以下命令:

SqlCmd -E -S Server_Name –Q “RESTORE DATABASE [Name_of_Database] FROM DISK=’X:PathToBackupFile[File_Name].bak'”

例如:

SqlCmd -E -S MyServer –Q “RESTORE DATABASE [MyDB] FROM DISK=’D:BackupsMyDB.bak'”

上面的命令將從存儲在備份文件“D:BackupsMyDB.bak”中的數據恢復“MyDB”的備份。自備份文件創建以來對MyDB所做的任何更改都將丟失。

使用上述命令時要記住的一件重要事情是,它旨在用於創建相應備份文件的同一SQL Server上。 SQL備份文件存儲“幕後”信息,用於控製備份文件中數據文件的複制位置和方式。如果要從其他SQL Server還原備份,則備份文件中的路徑位置可能與要還原到的服務器不匹配,從而導致錯誤。雖然可以解決這個問題,但使用SQL Management Studio工具恢復在另一台SQL Server上創建的備份要容易得多。

注意:上面的命令適用於SQL 2005及更高版本(任何版本)。對於SQL 2000及更早版本,將'SqlCmd'替換為'oSql'。

Link
Plus
Send
Send
Pin