可以使用命令行还原SQL Server数据库吗?

恢复 SQL 数据库的常见方法是在 SSMS (SQL Server Management Studio) 中使用恢复 GUI 或 T-SQL 语句。 但是如果你不想每次都登录到 SSMS,命令行也是一个快速执行 MSSQL 相关任务的选项。

使用命令行恢复SQL数据库实际上是通过在命令提示符中输入T-SQL语句来实现的,但是如何实现呢? 在这里,我将提供用于数据库恢复的快速指南和基本的 SQLCMD 命令。

如何在命令提示符中输入 T-SQL 语句

命令行实用程序 SQLCMD 使用户能够在命令提示符中连接到 SQL Server 实例,从中发送 Transact-SQL 批处理,并从中输出行集信息。

SQLCMD 在 SQL Server 2014 及更低版本中作为产品的一部分提供。 如果您运行的是 SQL Server 2016 及以上版本,您可能需要从以下位置下载它这一页 .

有了它,您可以使用命令行来备份和恢复 SQL 数据库。 只需在 Windows 搜索栏中键入“cmd”,然后运行命令提示符即可输入 T-SQL 语句。

*您也可以按 Win + R 键,在运行窗口中输入“cmd”,然后点击确定启动它。

命令提示符

命令行还原SQL Server数据库

在 MSSQL 中,您通常需要从 .bak 文件恢复数据库,也可以使用以下备份语句通过命令行创建该文件:

SqlCmd -E -S ServerName -Q "BACKUP DATABASE DatabaseName TO DISK='Filepath'"

填写你自己的服务器名、数据库名和文件路径(包括文件名和.bak后缀),备份会根据你的需要执行。

*点击链接了解更多 如何使用命令行备份SQL数据库 .

使用先前创建的 .bak 文件,您可以使用命令行还原SQL Server数据库。 下面是一些常用的命令:

从完整备份恢复 SQL 数据库

SqlCmd -E -S ServerName -Q "RESTORE DATABASE DatabaseName FROM DISK='Filepath'"

从完整备份恢复

从差异备份中恢复 SQL 数据库

SqlCmd -E -S ServerName -Q "RESTORE DATABASE DatabaseName FROM DISK='Filepath_Full' WITH NORECOVERY"
SqlCmd -E -S ServerName -Q "RESTORE DATABASE DatabaseName FROM DISK='Filepath_Diff' 带恢复"

/assets/screenshot/others/sqlcmd/restore-differential-backup.png

还原 SQL Server 事务日志备份

SqlCmd -E -S ServerName -Q "RESTORE LOG DatabaseName FROM DISK='Filepath' WITH NORECOVERY"

在命令提示符中输入相应的命令, “回车”运行。 如果需要经常执行相同的命令,也可以在文本文件中键入,并以.bat 扩展名保存。 因此,您只需双击即可运行它,即 使用批处理文件恢复 SQL 数据库 .

“数据库日志的尾部尚未备份 ”

使用命令行恢复SQL数据库时,可能会收到错误提示“数据库日志尾部尚未备份。 如果日志包含您不想丢失的工作,请使用 BACKUP LOG WITH NORECOVERY 备份日志。 使用 RESTORE 语句的 WITH REPLACE 或 WITH STOPAT 子句来覆盖日志的内容”。

日志的尾部尚未备份

要解决这个问题,你只需要按照提示,在恢复之前用NORECOVERY备份数据库的事务日志(如果你不想丢失日志的内容):

SqlCmd -E -S ServerName -Q "RESTORE LOG DatabaseName FROM DISK='Filepath' WITH NORECOVERY"

或者使用 WITH REPLACE 或 WITH STOPAT 来覆盖日志的内容:

SqlCmd -E -S ServerName -Q "RESTORE DATABASE DatabaseName FROM DISK=''Filepath' WITH REPLACE"

如何一次恢复多个 SQL 数据库

如果您只想从备份中恢复一个或几个数据库,只需使用相应的数据库名称和 .bak 文件重复该命令即可。

如果要一次性恢复多个数据库,比如一个实例的所有数据库,建议直接在SSMS中使用T-SQL语句。 查看详细信息  恢复多个 SQL 数据库 .

无需使用命令即可高效恢复 SQL 数据库

使用命令行恢复 SQL 数据库是一种方便的方法,但前提是您对 T-SQL 语句有一定的了解。  在这里我将提供一个更简单的选择 - 傲梅企业备份网络版 . 适合 有以下需求 的人群:

  • 通过简单的点击而不是容易出错的命令来执行备份和恢复
  • 定时自动执行相同的备份任务
  • 一次备份和恢复多个 SQL 数据库
  • 管理局域网内所有客户端电脑的SQL数据库
  • 保护范围广泛的数据,包括 SQL 数据库、操作系统、文件、分区、磁盘

如果您想尝试一下,这里有 180天的免费试用期:

它是一款集中式备份软件,不仅可以管理您自己的电脑,还可以管理 局域网内的所有Windows台式机、笔记本电脑、服务器、虚拟机。 要正确设置它,请遵循以下过程:

  • 在您的计算机上下载并安装  “傲梅企业备份网络版”作为中央管理控制台。
  • 启动软件, 远程或手动 “将客户端程序安装”到网络上检测到的计算机。
  • 选择您要管理的客户端计算机, “请求控制”它们并等待它们的确认。

请求控制

然后你就可以根据需要在所有受控计算机上开始备份或恢复 SQL 数据库。

备份 SQL 数据库的步骤

sql服务器备份

2. 设置窗口分为 3 个主要步骤。

第一步 :点击 “+添加计算机,”检测到所有被控制的带SQL实例的计算机,选择你要备份的计算机。

添加电脑

第二步: 点击 “+添加”选择源数据。 您可以一次选择多个数据库甚至多个实例。

选择数据库

Step 3 : 点击 Add Storage输入备份目标NAS的共享网络路径。

选择目标路径

3. 基本设置完成后,您可以添加一个 “计划”来自动执行任务一次/每天/每周/每月,或在 “设置”中管理备份加密、压缩、通知等。 然后,点击 “开始备份”创建并执行任务。

恢复 SQL 数据库的步骤

1.创建的备份任务将显示在 “任务”选项卡中。 您可以通过单击“高级”> “还原”直接从中恢复数据库 。

从 sql server 备份恢复

2. 选择源计算机,然后选择源数据库。 您可以准确选择要从哪个备份还原(如果您多次执行该任务),是还原备份中的所有数据库还是还原单个数据库。

选择要恢复的内容

将数据库还原到另一个 SQL Server 在另一台客户端计算机上。

恢复到新位置

4. 单击 “开始还原”执行还原并等待还原完成。

结论

使用命令行执行SQL Server数据库还原可以省力,但输入T-SQL语句时的一个小错误可能会导致操作失败。 如果您更喜欢更直接的方式,  傲梅企业备份网络版版可能是一个值得尝试的选择。

其简洁的 GUI 大大简化了还原操作,尤其是当您需要一次还原多个数据库时。 此外,它不仅支持SQL数据库,还可以管理局域网内所有计算机的文件、系统、磁盘和分区的备份和恢复。 所以你可以简单地将它用作客户端-服务器备份解决方案。