一、概述
RESTORE ... WITH MOVE 选项允许您恢复数据库,但也可以指定数据库文件(mdf 和 ldf)的新位置。如果您要从该数据库的备份还原现有数据库,则不需要这样做,但如果您要从具有不同文件位置的不同实例还原数据库,则可能需要使用此选项。
RESTORE ... WITH MOVE 选项将让您确定数据库文件的名称以及创建这些文件的位置。在使用此选项之前,您需要知道这些文件的逻辑名称以及 SQL Server 的位置。
如果已经存在另一个使用您尝试还原的相同文件名的数据库并且该数据库处于联机状态,则还原将失败。但是如果数据库由于某种原因不在线并且文件没有打开,如果你不使用 WITH MOVE 选项,恢复将覆盖这些文件,所以要小心你不要意外覆盖好的数据库文件。
此外,当使用 WITH MOVE 选项时,您需要确保用于 SQL Server 引擎的帐户有权在您指定的文件夹中创建这些文件。
二、过程
2.1 T-SQL
确定备份内容
因此,您需要做的第一件事是确定文件的逻辑名称和物理位置。这可以通过使用RESTORE FILELISTONLY命令来完成。这将为您提供逻辑名称和物理名称。
如下面的例子:
代码语言:javascript复制RESTORE FILELISTONLY FROM DISK = 'C:AdventureWorks.BAK'GO
输出结果:
列名 | 值 - 第 1 行 | 值 - 第 2 行 |
---|---|---|
逻辑名称 | AdventureWorks_Data | AdventureWorks_Log |
物理名称 | C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDataAdventureWorks_Data.mdf | C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDataAdventureWorks_Log.ldf |
类型 | D | L |
使用 MOVE 恢复完整备份 假设我们要恢复这个数据库,但我们希望将数据文件放在“G:SQLData”文件夹中,将事务日志文件放在“H:SQLLog”文件夹中。该命令如下所示:
代码语言:javascript复制RESTORE DATABASE AdventureWorks FROM DISK = 'C:AdventureWorks.BAK'WITH MOVE 'AdventureWorks_Data' TO 'G:SQLDataAdventureWorks_Data.mdf',MOVE 'AdventureWorks_Log' TO 'H:SQLLogAdventureWorks_Log.ldf'GO
还原完整和事务日志备份 WITH MOVE 只需为第一次还原指定 WITH MOVE,因为此后数据库将处于“还原”状态。第二次还原只会将内容写入正在使用的这个新位置。
代码语言:javascript复制RESTORE DATABASE AdventureWorks FROM DISK = 'C:AdventureWorks.BAK'WITH MOVE 'AdventureWorks_Data' TO 'G:SQLDataAdventureWorks_Data.mdf',MOVE 'AdventureWorks_Log' TO 'H:SQLLogAdventureWorks_Log.ldf',NORECOVERYGORESTORE LOG AdventureWorks FROM DISK = 'C:AdventureWorks.TRN'GO
2.2 SQL Server 管理工作室
要使用 SSMS 进行还原,请执行以下操作,在还原的选项页面上,更改每个文件的“还原为:”的值,如下所示。下面将还原到根文件夹,但您可以根据需要将它们更改为 G:SQLData 和 H:SQLLog。
来源:
https://www.toutiao.com/article/7132496418056585728/?log_from=e2058b96ff03_1661148075340
“IT大咖说”欢迎广大技术人员投稿,投稿邮箱:aliang@itdks.com
来都来了,走啥走,留个言呗~
IT大咖说 | 关于版权
由“IT大咖说(ID:itdakashuo)”原创的文章,转载时请注明作者、出处及微信公众号。投稿、约稿、转载请加微信:ITDKS10(备注:投稿),茉莉小姐姐会及时与您联系!
感谢您对IT大咖说的热心支持!
- 相关推荐 推荐文章
- 985计算机系毕业找不到工作?原来同样是大学,学到的东西不一样
- Google 正式发布 Android 13,已发布至 AOSP
- 一文搞定MySQL的分区技术、NoSQL、NewSQL、基于MySQL的分表分库
- Python版本的选择
- 详解构建mock服务最方便的神器——Moco
- 分享一个日常使用的一段shell脚本
- Java 结构化数据处理开源库 SPL
- 高度定制化 Git 工作流工具,上手简单,功能强大,性能优异
- 面向数据科学家的流处理介绍