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

数据库备份:

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

参考链接:链接

你可能感兴趣的:(数据库,数据库)