2010-08-16 337 views
51

我想通过SQL Server管理工作室从文件(任务 - >恢复 - >数据库;选择设备并选择文件后)恢复数据库。恢复数据库期间mssql'5(Access is denied。)'错误

在那之后,我得到这个错误:

The operating system returned the error '5(Access is denied.)' while attempting 'RestoreContainer::ValidateTargetForCreation' on 'E:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\XXXXXX.mdf'. Msg 3156, Level 16, State 8, Server XXXX, Line 2

我该如何解决这个问题?这是一个安全错误吗?

回答

65

正在运行sql server的帐户无权访问备份文件的位置或正尝试将数据库还原到的位置。您可以使用SQL Server配置管理器来查找哪个帐户用于运行SQL Server实例,然后确保该帐户完全控制.BAK文件和MDF将恢复到的文件夹。

enter image description here

+11

我改为“本地系统”,它的工作! – Seva 2014-07-17 00:28:59

+2

我将“NT Service \ MSSQLSERVER”用户添加到允许的“组或用户名”列表中,并且它可以正常工作 – slava 2016-04-18 07:07:53

4

我只是碰到了同样的问题,但有不同的定位。本质上,我的计算机上安装了SQL Server和SQL Server Express。当我尝试还原到SQL Express时,这不起作用,但在将它还原到SQL Server时正常工作。

+0

+1这可能是一个特别讨厌的情况,导致在调试错误时浪费太多时间 – demongolem 2013-09-30 16:45:18

1

我发现了这一点,它的工作对我来说:

CREATE LOGIN BackupRestoreAdmin WITH PASSWORD='[email protected]$$w0rd' 
GO 
CREATE USER BackupRestoreAdmin FOR LOGIN BackupRestoreAdmin 
GO 
EXEC sp_addsrvrolemember 'BackupRestoreAdmin', 'dbcreator' 
GO 
EXEC sp_addrolemember 'db_owner','BackupRestoreAdmin' 
GO 
130

最近我有这个问题。对我来说,修复方法是进入“恢复数据库”对话框的“文件”页面,并选中“将所有文件重新定位到文件夹”。 Restore Database dialog

+3

感谢您的。这对我来说是最好的解决方案,因为源数据库位于我打算从系统中删除的驱动器上。搬迁是此举的必要组成部分。 – 2013-09-30 14:58:21

+1

此解决方案也适用于我 – Dhatri 2016-11-08 10:59:14

0

在我的情况下,我不得不在Overwrite the existing database (WITH REPLACE)Options标签页Restore Database页面。

我得到这个错误的原因是:因为数据库已经存在一个MDF文件,并且它没有被覆盖。

希望这会帮助别人。

1

如果您要附加数据库,请在查看“要附加的数据库”网格,特别是在指定了.mdf文件之后的“所有者”列中查看。注意帐户并为mdf和ldf文件授予完全权限。

1

我试过上面的场景并得到了同样的错误5(拒绝访问)。我做了深入的研究,发现文件.bak应该可以访问SQL服务帐户。如果您不确定,请在开始 - >运行中键入services.msc,然后检查SQL服务登录帐户。

然后转到该文件,右键单击并选择属性中的安全选项卡,然后编辑以添加新用户。

最后,请给予它的完全权限,以便完全访问。

然后从SSMS尝试恢复备份。

+1

您还没有足够的代表直接附加屏幕截图,因此请粘贴链接以作为对此文章的评论,并且有人会为您添加。 – 2015-02-10 01:24:16

+0

这是上下文的唯一答案,它适用于问题的实体框架样式实例,我相信这里没有.BAK文件。 (代码优先 - 实体框架 - 初始数据库种子迁移) 您有很多感激之情 - 我花了数小时寻找一个合理的答案后花费了! – Mitchb 2015-09-06 13:28:00

1

我在尝试恢复SQL 2012数据库中的SQL 2008 R2备份数据库时收到相同的错误。我想这个错误是由于没有足够的权限将.mdf和.ldf文件放在C盘中。我尝试了一件简单的事情,然后成功地恢复了它。

试试这个:

在还原数据库向导窗口,转到文件选项卡,在C更改还原目标:到其他驱动器。然后继续进行常规恢复过程。它一定会成功恢复!

希望这对你也有帮助。干杯:)

6

嗯,在我的情况下,解决方案非常简单直接。

我不得不改变价值log On As值。

步骤Resolve-

  1. 打开Sql Server Configuration manager
  2. click on SQL Server (MSSQLSERVER
  3. 转到Properties

​​

  • 变化log On AsLocalSystem
  • enter image description here

    希望这将帮助您太:)

    0

    我h广告完全相同的问题,但我的修复是不同的 - 我的公司正在加密我的机器上的所有文件。解密MSSQL文件后没有任何问题访问和创建数据库。只需右击.bak文件属性高级...加密内容以保护数据。 Decrypting

    0

    这发生在我今天早些时候,我是本地服务器的管理员组的成员,有通行无阻,或者我是这么认为的。我还勾选了“替换”选项,即使实例中没有这样的数据库。

    发现那里曾经有同名的数据库,MDF和LDF文件仍然物理地位于服务器的数据和日志文件夹中,但sys.databases中缺少实际的元数据。 SQL服务器的服务帐户也不能覆盖现有的文件。还发现文件的所有者是“未知的”,我必须将所有权更改为上面的两个文件,以便它现在由本地服务器的管理员组拥有,然后重命名它。

    然后最后,它的工作。

    0

    我得到了这个错误,因为我在“恢复数据库”窗口的“文件”选项卡中选中了“将所有文件重新分配给文件夹”,但默认路径在我的本地计算机上不存在。我在另一个文件夹中有ldf/mdf文件,一旦我改变了我能够恢复的文件。