SQL Server还原错误 - 拒绝访问

cdu*_*dub 148 sql-server backup sql-server-2005 restore

我在本地计算机上创建了一个数据库,然后执行了一个名为tables.baktable 的备份DataLabTables.

我将该备份移动到没有该表的远程计算机并尝试进行还原但出现以下错误:

System.Data.SqlClient.SqlError:在'c:\ Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DataLabTables上尝试'RestoreContainer :: ValidateTargetForCreation'时,操作系统返回错误'5(访问被拒绝.)'密度纤维板".

如果这是问题,我如何修复我的权利?

Exi*_*ile 483

我刚刚遇到SQL Server 2012的这个问题.

事实证明我所要做的就是勾选"文件"部分标记为"将所有文件重新定位到文件夹"的框:

在此输入图像描述

(点击查看图片全尺寸)

这当然假设您安装了正确版本的SQL Server.

  • 也为我工作过.任何人都可以解释_why_? (11认同)
  • 我需要给你一个幸福.现在说真的,我正要对客户说不,你的答案保存了我的项目. (9认同)
  • 我在2014年有这个问题,同样的修复. (7认同)
  • 您还能分享一下如何通过脚本而不是UI来完成这项工作吗? (2认同)
  • 从SQL Express备份并还原到完整的SQL Server时,这也是我的解决方案 (2认同)
  • 如果目标实例具有不同的名称(版本),就会发生这种情况。因此程序尝试复制到不存在的文件夹。该复选标记会为您创建一个新文件夹。 (2认同)
  • 该解决方案适用于:从 MSSQL 2016 恢复 MSSQL 2019 中的数据库 (2认同)

mar*_*c_s 30

从错误消息中,它表示在验证还原操作的target(c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DataLabTables.mdf)时出错.

听起来像是:

a)该文件已存在(因为您之前已经恢复过)并且正在被SQL Server使用

要么

b)该目录根本不存在

在您的问题中,您提到您为该表创建了一个备份 - 这不是SQL Server备份的工作方式.这些备份始终是整个数据库(或该数据库中的至少一个或多个文件组).

我的预感是:您之前已经恢复了该数据库,现在,在第二次恢复时,您没有在恢复向导中选中"覆盖现有数据库"复选框 - 因此无法覆盖现有文件并且恢复失败.

在远程服务器上运行还原的用户显然无法访问远程服务器上的该目录.

C:\program files\.... 是受保护的目录 - 普通(非管理员)用户无权访问此目录(及其子目录).

最简单的解决方案:尝试将BAK文件放在其他位置(例如C:\temp)并从那里恢复

  • @marc_s:对上面列出的选项A的"并且正在被SQL Server使用"部分的次要注释:如果文件存在,则标准的`RESTORE`命令失败,即使它*不是由SQL Server使用*(例如,MDF/LDF文件在前一次分离后仍保留在原位).我在一个基于T-SQL的自定义日志传送实现中遇到了这个问题,在过去的几周内,数百个数据库的主要迁移.我不确定错误消息是"访问被拒绝",可能是不太具体的. (2认同)
  • 在我通过备份恢复之前,我不得不手动重命名现有的MDF/LDF文件 - 检查"覆盖"是不够的. (2认同)

Fle*_*lea 25

我遇到了同样的问题.事实证明,我SQL ServerSQL Server Agent服务logon asNetwork Services没有写访问权限的帐户下运行,以执行备份的恢复.

我更改了这两个服务以登录Local System Account,这解决了问题.

  • 我的SQL Server服务运行在“ NT Service \ MSSQLSERVER”,向该用户添加了对此用户的权限,并为其使用了data和log文件夹。 (2认同)

Dev*_*vin 9

最近我遇到了SQL 2008 R2的这个问题,以下解决方案对我有用:

1)创建一个与您尝试恢复的数据库同名的新数据库2)恢复时,使用上面使用的相同名称,然后在选项中单击覆盖选项

如果其他解决方案不起作用,您可以给出上述内容.


Phi*_*ati 6

备份创建者安装了MSSql版本10,因此当他进行备份时,它还会存储原始文件路径(为了能够在同一位置恢复它),但我有版本11,因此无法找到目标目录.

所以我将输出文件目录更改为C:\ Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA \,它能够成功还原数据库.

资源


mar*_*ijn 6

我遇到了类似的问题.我试图恢复2005 .bak文件,我收到完全相同的错误.我选择了覆盖选项也无济于事.

我的解决方案是通过转到文件夹并通过属性屏幕编辑访问权限,授予SQL用户访问相关目录的权限.