1.概述RESTORE...WITHMOVE选项允许您还原数据库,但您也可以为数据库文件(mdf和ldf)指定新位置.如果您要从该数据库的备份还原现有数据库,则不需要此选项,但如果您要从具有不同文件位置的不同实例还原数据库,则可能需要使用此选项。RESTORE...WITHMOVE选项将让您确定数据库文件的名称以及创建它们的位置。在使用该选项之前,您需要知道这些文件的逻辑名称和SQLServer的位置。如果另一个与您尝试恢复的文件名相同的数据库已经存在并且处于联机状态,则恢复将失败。但是如果由于某种原因数据库不在线并且文件没有打开,如果你不使用WITHMOVE选项,恢复将覆盖那些文件,所以要小心不要不小心覆盖了一个好的数据库文件。此外,在使用WITHMOVE选项时,您需要确保用于SQLServer引擎的帐户具有在您指定的文件夹中创建这些文件的权限。二、流程1、T-SQL确定备份内容因此,首先要做的是确定文件的逻辑名和物理位置。这可以通过使用RESTOREFILELISTONLY命令来完成。这将为您提供逻辑名称和物理名称。例如下面的例子:RESTOREFILELISTONLYFROMDISK='C:\AdventureWorks.BAK'GO输出结果:列名值-第1行值-第2行逻辑名AdventureWorks_DataAdventureWorks_Log物理名C:\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdfC:\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data\AdventureWorks_Log.ldfTypeDLRestoreFullBackupUsingMOVE假设我们想要恢复这个数据库,但是我们想要将数据文件放在“G:\SQLData”文件夹中,将事务日志文件放在“H:\SQLLog”文件夹中。命令如下所示:RESTOREDATABASEAdventureWorksFROMDISK='C:\AdventureWorks.BAK'WITHMOVE'AdventureWorks_Data'TO'G:\SQLData\AdventureWorks_Data.mdf',MOVE'AdventureWorks_Log'TO'H:\SQLLog\AdventureWorks_Log.ldf'GO恢复完整和事务日志备份WITHMOVE您只需为第一次恢复指定WITHMOVE,因为此后数据库将处于“已恢复”状态。第二次恢复将只写入这个正在使用的新位置。从磁盘还原数据库AdventureWorks='C:\AdventureWorks.BAK'WITHMOVE'AdventureWorks_Data'TO'G:\SQLData\AdventureWorks_Data.mdf',MOVE'AdventureWorks_Log'TO'H:\SQLLog\AdventureWorks_Log.ldf',NORECOVERYGORESTORELOGAdventureWorksFROMDISK='C:\AdventureWorks.TRN'GO2,SQLServerManagementStudio要使用SSMS恢复,请执行以下操作,在恢复的选项页面上,为每个文件更改“恢复到:”的值,如下所示。以下将恢复到根文件夹,但您可以根据需要将它们更改为G:\SQLData\和H:\SQLLog\。
