SQL Server还原数据库bak文件怎么操作?5种方法!
SQL Server还原数据库bak文件怎么操作?本文将为您介绍5个不同的办法,都可以帮助您有效保护数据库安全。
尽管计算机技术已经发展到相当高的水平,但硬件故障、系统错误、误操作等问题仍时有发生,导致交易运行异常中断。 它可能会影响SQL Server 中数据的正确性,甚至导致数据库损坏或完全丢失。
当意外发生时,您需要还原SQL数据库,这需要您提前做好备份。 如果你没有做过,请参考 SQL Server Management Studio 备份 .
要恢复一个或两个SQL数据库,您可以简单地使用方法1。对于一个实例的所有数据库,方法2可以提供帮助。 但是如果你想在不使用命令的情况下恢复多个数据库,方法 5 将是一个更简单的解决方案解决SQL Server还原数据库bak文件怎么操作问题。
5种在SQL Server中恢复数据库的方法:
SSMS 提供了一种带有 GUI 的还原方法。 它允许您通过相对简单的操作来恢复 MSSQL 数据库,但一次只能恢复一个数据库。
*在 SQL Server 中,您只能从 bak 文件恢复数据库。 因此,请确保您事先创建了备份文件。
1. 启动 SSMS 并连接到您的实例。 右键单击 “数据库”并选择 “还原数据库”。
2. 这里有两种SQL数据库还原方法,即选择源作为 “数据库”或 “设备”。 如果您的备份文件未存储在默认目录中,请选择 “设备”。
3. “添加”要恢复的bak文件。 然后单击 “确定”执行备份。
“提示:”
☛ 如果你想 将 SQL 数据库恢复到另一台服务器 但收到错误 3154“备份集保存了现有数据库以外的数据库的备份”,这是因为您在目标实例上创建了一个同名的空数据库,这是一个多余的步骤。 事实上,你只需要像往常一样添加备份文件,一个新的数据库就会相应地自动创建。
☛ 如果因为“操作系统返回错误'5(访问被拒绝)'…”而导致恢复失败,请切换到文件选项卡,勾选将所有文件重新定位到文件夹并重试。
SQL Server还原数据库bak文件怎么操作?T-SQL 脚本虽然不易上手,但是一旦您了解了基本命令,您就可以更方便、更灵活地执行一些操作。
从完整备份恢复 SQL 数据库的基本命令是:
RESTORE DATABASE database_name='path\file.bak'
比如我想恢复一个名为“example”的MSSQL数据库,命令可以是:
RESTORE DATABASE示例='D:\backup\example.bak'
“注意:”如果您收到错误“数据库日志的尾部尚未备份”,您可以使用 BACKUP LOG WITH NORECOVERY 备份日志(如果它包含您不想丢失的工作),或使用RESTORE 语句的 WITH REPLACE 或 WITH STOPAT 子句只是覆盖日志的内容。
要从差异备份中恢复,您应该事先使用 WITH NORECOVERY 恢复最后一次完整备份,然后使用 WITH RECOVERY 恢复差异备份以完成。 否则你可能会得到你的 SQL 数据库卡在恢复中 .
该命令将是:
RESTORE DATABASE database_name FROM DISK='path\file_full.bak' WITH NORECOVERY GO RESTORE DATABASE database_name FROM DISK='path\file_diff.bak' WITH RECOVERY GO
如果你想从bak文件中恢复的不仅仅是一个或两个数据库,而是一个实例的所有数据库,你可以先执行这个脚本来启用xp_cmdshell:
-- To allow advanced options to be changed. EXEC sp_configure 'show advanced options', 1; GO -- To update the currently configured value for advanced options. RECONFIGURE; GO -- To enable the feature. EXEC sp_configure 'xp_cmdshell', 1; GO -- To update the currently configured value for this feature. RECONFIGURE; GO
然后执行以下脚本来还原SQL数据库:
DECLARE @FilesCmdshell TABLE (
outputCmd NVARCHAR (255)
)
DECLARE @FilesCmdshellCursor CURSOR
DECLARE @FilesCmdshellOutputCmd AS NVARCHAR(255) INSERT INTO @FilesCmdshell (outputCmd) EXEC master.sys.xp_cmdshell 'dir /B filepath\*.bak'
SET @FilesCmdshellCursor=CURSOR FOR SELECT outputCmd FROM @FilesCmdshell OPEN @FilesCmdshellCursor
FETCH NEXT FROM @FilesCmdshellCursor INTO @FilesCmdshellOutputCmd
WHILE @@FETCH_STATUS=0
BEGIN
DECLARE @cmd NVARCHAR(MAX)='RESTORE DATABASE [' + SUBSTRING(@FilesCmdshellOutputCmd, 0, CHARINDEX('.',
@FilesCmdshellOutputCmd)) + '] FROM DISK=N''filpath' + SUBSTRING(@FilesCmdshellOutputCmd, 0, CHARINDEX('.',
@FilesCmdshellOutputCmd)) + '.bak'' WITH FILE=1, NOUNLOAD, STATS=10'
EXEC(@cmd) FETCH NEXT FROM @FilesCmdshellCursor INTO @FilesCmdshellOutputCmd
END
您实际上可以在不登录 SSMS 的情况下完成SQL数据库还原任务,但这需要 SQLCMD。 它随 SQL Server 2014 及更低版本一起提供。 如果您正在运行更高版本,您可能需要 下载 它分开。
使用 SQLCMD,您可以使用命令提示符恢复 MSSQL。 搜索“CMD”并以管理员身份运行它。 然后使用以下命令还原SQL数据库:
SqlCmd -E -S server_name -Q “RESTORE DATABASE database_name FROM DISK='path\file.bak'”
同样,如果遇到“tail of the log for the database has not been backed up”的错误,可以尝试事先通过BACKUP LOG WITH NORECOVERY备份日志,或者使用RESTORE语句的WITH REPLACE或WITH STOPAT子句覆盖内容的日志。
如果要恢复差异备份,需要先用WITH NORECOVERY恢复上次的全量备份,再用WITH RECOVERY恢复差异备份:
SqlCmd -E -S server_name -Q “RESTORE DATABASE database_name FROM DISK='path\file_full.bak' WITH NORECOVERY” SqlCmd -E -S server_name -Q “RESTORE DATABASE database_name FROM DISK='path\file_diff.bak' 带恢复”
更多详情,您可以参考 使用命令行备份和恢复 SQL 数据库 .
SQL Server还原数据库bak文件?您也可以使用 PowerShell 进行备份,并在不登录 SSMS 的情况下从 bak 文件还原 SQL 数据库。
1. 在 Windows 中搜索“powershell”,选择 Windows PowerShell ISE 并以管理员身份运行。
2. 输入命令“Set-ExecutionPolicy Unrestricted”并 “回车”执行。 在弹出的提示中 点击 “是,即可更改执行策略”。
3. 现在,输入“Import-Module SQLPS –DisableNameChecking”以加载 SQL 模块。 然后使用以下命令进行SQL数据库还原任务:
Restore-SqlDatabase -ServerInstance server_name -Database 数据库名 ` -BackupFile path\file.bak -ReplaceDatabase
这是我的例子:
Restore-SqlDatabase -ServerInstance DESKTOP-AC51C0M -数据库 mydb ` -BackupFile D:backup\mydb_20210719_140639.bak -ReplaceDatabase
提示: 如果您收到“The term 'Restore-SqlDatabase' is not recognized”错误,请在右侧模块窗口中搜索“restore”,然后选择要Restore-SqlDatabase模块。
虽然您拥有所有这些用于 MSSQL 数据库恢复的选项,但它们要么容易出错,要么难以同时还原SQL数据库。 所以,推荐一款第三方的SQL Server备份软件,方便管理。
傲梅企业备份网络版 允许集中 SQL Server 备份和恢复,这意味着您可以在任何联网的计算机上备份任意数量的数据库,并直观地从备份中恢复 SQL 数据库。
没有涉及 T-SQL 命令,所有操作都可以通过简单的点击来完成。 下载30天免费试用版进行试用:
正确安装软件,即可控制所有安装了 “客户端包”的电脑(包括你的中心机)。
MSSQL 中的备份数据库:
1. 导航到 “任务”> “新任务”> SQL Server 备份以创建 MSSQL 备份任务。
2、在 第1步中,点击 “+添加计算机”,检测到SQL实例被控制的计算机,在弹出的窗口中选择要备份的客户端计算机。
3. 在 第2步中,点击 “+添加”检测电脑上的实例。 然后您可以相应地选择一个或多个数据库。
4. 单击 第 3 步并单击 “添加存储”以指定网络共享或 NAS 路径。 添加的存储空间将被保存以备后用。
5. 自定义备份任务,然后您可以 “开始备份”> “创建并执行任务”。
“提示:”如果你想 自动备份SQL数据库 ,去设置一个 “计划”来自动执行任务。 您还可以在“高级”选项卡中选择执行完整备份或差异备份 。
从备份恢复 MSSQL 数据库:
1. 创建的备份任务将列在 “任务”选项卡中。 单击 其右上角的 “高级,然后选择”“还原”以继续。
2. 选择要还原的计算机和数据库。 您可以选择备份的具体日期和类型(完整或差异)。
3. 除了恢复到原来的位置,您甚至可以将SQL数据库恢复到局域网内的另一台服务器上。 根据您的需要做出选择。 然后单击 “开始还原”即可开始执行SQL数据库还原任务。
“覆盖现有数据库”:勾选此选项后,备份中保存的数据库将覆盖同名的目标数据库。 否则将忽略具有相同名称的目标数据库。
当你的MSSQL数据库遇到问题,想从备份中恢复时,可以参考本文提供的的SQL Server还原数据库bak文件怎么操作的解决方法,小编更推荐使用第5种傲梅企业备份网络版版最方便直观。
除了 MSSQL 数据库,您还可以将它用于其他重要的计算机数据,例如 傲梅企业备份网络版 .