SQL Server通过指令备份数据库和恢复数据库

当在不同服务器间进行数据库备份和恢复时,由于文件路径差异可能导致错误。使用RESTOREDATABASE语句的WITHMOVE选项可以指定新的文件路径。可以通过SQLServer的RESTOREFILELISTONLY命令获取LogicalName和PhysicalName,以便正确地在目标服务器上恢复数据库。在恢复完成后,若数据库处于还原状态,需用RESTOREDATABASEWITHRECOVERY来完成最后的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库备份:

backup database [MyTestDB]
 to disk='D:\MyTestDB_20200101.bak'
 with format,init,stats=1,compression

 数据库恢复:

restore database MyTestDB_new
 from disk='D:\MyTestDB_20200101.bak'
 with 
 move 'MyTestDB' to 'D:\MyTestDB_new.mdf',
 move 'MyTestDB_log' to 'D:\MyTestDB_new_log.ldf'
 ,replace,norecovery

当我们把服务器A上的一个数据库备份后,在服务器B上还原的时候, 直接 restore 的时候,大多情况下都会出错,可能的原因是数据库的文件(数据和日志)在 不同服务器上所在的 path 不同。这时候就需要 restore with move 选项,来把数据库 文件还原到目标 path 中。with move 的详细语法:

MOVE 'logical_file_name' TO 'operating_system_file_name' [ ,...n ]

如果只有一个bak备份文件,要在自己的机器上restore,那么如何来确定 with move 中的逻辑文件名呢?使用 SQL Server restore filelistonly 来查看。

从 SQL Server restore filelistonly 命令结果中可以获取很多信息, 下面仅列出 LogicalName and PhysicalName。

restore filelistonly from disk='c:\Northwind.bak'
LogicalName       PhysicalName
---------------  ------------------------------------------------------------------
Northwind        d:\Program Files\Microsoft SQL Server\MSSQL$SQLA\data\northwnd.mdf
Northwind_log    d:\Program Files\Microsoft SQL Server\MSSQL$SQLA\data\northwnd.ldf

这里的LogicalName就是放在上面代码里move后面的。

 参考链接:链接

执行完成后,如果数据库显示正在还原,则执行下面这句:

RESTORE DATABASE MyTestDB_new WITH RECOVERY

参考链接:链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值