关注

SQLSERVER数据库备份别人数据库出现错误

SQLSERVER数据库备份别人数据库出现错误

标题: Microsoft SQL Server Management Studio ------------------------------ 还原数据库“Blog”时失败。 (Microsoft.SqlServer.Management.RelationalEngineTasks) ------------------------------ 其他信息: Microsoft.Data.SqlClient.SqlError: 在对 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\Blog.mdf' 尝试 'RestoreContainer::ValidateTargetForCreation' 时,操作系统返回了错误 '5(拒绝访问。)'。 (Microsoft.SqlServer.SmoExtended) 有关帮助信息,请单击: https://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=16.200.48036.0&LinkId=20476 ------------------------------ 按钮: 确定 ------------------------------

这个错误是由于 SQL Server 服务没有足够的权限访问目标文件路径(C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\Blog.mdf)的权限,导致无法创建或写入数据库文件。

解决方法:授予 SQL Server 服务权限

第一步:找到 SQL Server 服务的运行账户

  1. 按下Win + R,输入services.msc打开 “服务” 窗口。

2.找到名为SQL Server (MSSQLSERVER)的服务(默认实例),右键选择 “属性”。

3.切换到 “登录” 选项卡,记录下 “此账户” 对应的用户名(通常是NT Service\MSSQLSERVER)。

NT Service\MSSQL$SQLSERVER2025

第二步:授予文件夹访问权限

1.打开文件资源管理器,导航到路径:

C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA

2.右键DATA文件夹 → 选择 “属性” → 切换到 “安全” 选项卡。

3.点击 “编辑” → “添加” → 在 “输入对象名称来选择” 中输入步骤 1 记录的账户(如NT Service\MSSQLSERVER),点击 “检查名称” 确认,然后 “确定”。

4.在权限列表中,勾选 “完全控制”(或至少勾选 “读取”“写入”“修改”“创建文件”),点击 “应用”→“确定”。

确定自己的权限是否添加上

点击完确定会出现一些弹窗,点击确定就可以,如果还继续出现弹窗

那就点击取消,返回上一页面

这样就会发现对应名称添加上了

再次确定自己的权限是否添加上

第三步:打开SQLSERVER数据库重新备份

1.打开对应软件,链接数据库,右键点击数据库

选择常规,然后在源中点击设备

选择文件介质,然后点击添加

选择对应备份文件目录

然后添加

加载完成之后,点击确定进行备份

完成之后确定数据库总表是否存在

其它错误:备份集中的数据库备份与现有的 'Blog' 数据库不同

标题: Microsoft SQL Server Management Studio ------------------------------ 还原数据库“Blog”时失败。 (Microsoft.SqlServer.Management.RelationalEngineTasks) ------------------------------ 其他信息: Microsoft.Data.SqlClient.SqlError: 备份集中的数据库备份与现有的 'Blog' 数据库不同。 (Microsoft.SqlServer.SmoExtended) 有关帮助信息,请单击: https://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=16.200.48036.0&LinkId=20476 ------------------------------ 按钮: 确定 ------------------------------

这个错误提示表明你尝试还原的 “Blog” 数据库备份文件,与当前 SQL Server 中已存在的 “Blog” 数据库不是同一个数据库(通常是因为数据库的唯一标识符不同)。

解决方法:强制覆盖现有数据库

  1. 打开还原数据库窗口右键 “数据库” → “还原数据库” → 在 “源” 中选择你的备份文件,“目标数据库” 保持为 “Blog”。
  2. 勾选 “覆盖现有数据库”切换到 “选项” 页面(左侧菜单),勾选 “覆盖现有数据库 (WITH REPLACE)”
  3. 确认并执行还原点击 “确定”,此时 SQL Server 会忽略数据库标识差异,强制用备份文件覆盖现有 “Blog” 数据库。

原理说明

每个 SQL Server 数据库都有一个唯一的DatabaseGUID,备份文件会记录这个标识。当你还原时,如果目标服务器上已存在同名数据库且DatabaseGUID不同,SQL Server 会拒绝还原以防止误操作。勾选 “覆盖现有数据库” 后,会强制替换现有数据库,解决此冲突。

如果现有 “Blog” 数据库还有用,建议先备份或重命名(如改为 “Blog_Old”),再执行还原操作。

标题: Microsoft SQL Server Management Studio ------------------------------ 还原数据库“Blog”时失败。 (Microsoft.SqlServer.Management.RelationalEngineTasks) ------------------------------ 其他信息: Microsoft.Data.SqlClient.SqlError: 无法执行 BACKUP LOG,因为当前没有数据库备份。 (Microsoft.SqlServer.SmoExtended) 有关帮助信息,请单击: https://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=16.200.48036.0&LinkId=20476 ------------------------------ 按钮: 确定 ------------------------------

该错误的核心原因是:数据库 “Blog” 当前处于完整恢复模式,但从未执行过完整备份,导致无法执行日志备份操作,而数据库还原过程中触发了这一检查。

错误原因分析

在 SQL Server 中,当数据库使用 “完整恢复模式” 时,其还原操作依赖于 “完整备份 + 日志备份” 的链式关系来保证数据一致性。如果数据库从未做过完整备份,SQL Server 会认为其日志链不完整,从而拒绝执行任何涉及日志操作的还原步骤,最终导致还原失败。

解决方案

方法 1:先为目标数据库做一次完整备份(推荐)
  1. 打开 SSMS,连接到你的 SQL Server 实例。
  2. 在 “对象资源管理器” 中,找到需要还原的目标数据库 “Blog”(如果不存在,可先新建一个同名空数据库)。
  3. 右键点击 “Blog” 数据库 → 选择 “任务” → “备份”。
  4. 在 “备份数据库” 窗口中:
    • 备份类型选择 “完整”。
    • 确认备份目标路径有效,点击 “确定” 完成备份。
  5. 备份完成后,重新执行之前的数据库还原操作,此时错误会消失。
方法 2:将目标数据库的恢复模式改为 “简单恢复模式”

如果不需要通过日志备份恢复数据,可临时修改恢复模式绕过日志检查:

  1. 右键点击 “Blog” 数据库 → 选择 “属性”。
  2. 在 “数据库属性” 窗口中,切换到 “选项” 页。
  3. 在 “恢复模式” 下拉框中,选择 “简单”,点击 “确定”。
  4. 重新执行还原操作,还原完成后,可根据需要将恢复模式改回 “完整”(改回后建议立即做一次完整备份,以重建日志链)。

注意事项

  • 如果还原的是别人提供的 “Blog” 备份文件,建议先确认备份文件的类型(是否包含完整备份),避免因备份文件本身不完整导致还原失败。
  • 还原操作前,确保目标数据库 “Blog” 没有正在进行的读写操作(如应用程序连接),可先将数据库设置为 “单用户模式” 再还原,还原后改回 “多用户模式”。

转载自CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/weixin_66547608/article/details/153745586

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--