SQL Server还原错误 - 拒绝访问

时间:2011-08-11 19:35:42

标签: sql-server sql-server-2005 backup restore

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

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

  

System.Data.SqlClient.SqlError:操作系统返回了   尝试时错误'5(访问被拒绝。)'   'c:\ Program'上的'RestoreContainer :: ValidateTargetForCreation'   Files \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ DataLabTables.mdf'。

如果出现问题,如何修复我的权利?

20 个答案:

答案 0 :(得分:442)

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

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

enter image description here

(点击查看图片全尺寸)

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

答案 1 :(得分:30)

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

听起来像是:

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

b)该目录根本不存在

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

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

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

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

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

答案 2 :(得分:25)

我遇到了同样的问题。事实证明,我的SQL ServerSQL Server Agent服务logon as是在Network Services帐户下运行的,该帐户没有写入权限来执行备份还原。

我将这两项服务都更改为Local System Account登录,这解决了问题。

答案 3 :(得分:9)

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

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

如果其他解决方案不起作用,您可以给出以上注意事项。

答案 4 :(得分:6)

  

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

     

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

Source

答案 5 :(得分:6)

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

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

答案 6 :(得分:2)

这个问题也损失了几个小时。它开始了:

在我的案例中,“拒绝访问”确实意味着“拒绝访问”。我的Windows设备上的mssqlstudio用户帐户没有完全控制错误消息中指定的文件夹。我完全控制了它。访问不再被拒绝,恢复成功。

为什么文件夹被锁定为工作室?谁知道 ?我有足够的问题要处理,因为它没有试图回答更多。

答案 7 :(得分:1)

我遇到了这个问题,我以管理员身份登录并修复了问题。

答案 8 :(得分:0)

遇到这样的问题。在SQL Server文件夹上启用压缩导致的错误。

答案 9 :(得分:0)

如果路径正确,但服务帐户不是数据文件的所有者,也会发生这种情况(但它仍然具有足够的权限进行读/写访问)。如果将文件的权限重置为与文件夹的权限匹配(当然,在服务停止时),则会发生这种情况。

在这种情况下,最简单的解决方案是分离每个数据库并再次附加它(因为附加所有者时已更改为服务帐户)。

答案 10 :(得分:0)

我最终为数据和日志创建了新文件夹,并且该文件夹正常工作,肯定是文件夹/文件权限问题。

答案 11 :(得分:0)

就我而言-我必须仔细检查要还原的数据库的备份路径。第一次进行此操作时,我以前是从其他路径恢复过的。我修复了备份路径,以使用我第一次使用的备份路径,并且有效!

答案 12 :(得分:0)

我遇到了同样的问题,但我使用的是sql server 2008 r2,你必须检查选项并验证sql要保存文件的路径.mdf和.ldf你必须选择sql server安装的路径。我解决了这个问题,希望对你有帮助。

答案 13 :(得分:0)

试试这个:

在Restore DB向导窗口中,转到Files选项卡,取消选中&#34;将所有文件重新定位到文件夹&#34;复选框然后将还原目标从C:更改为其他驱动器。然后继续进行常规还原过程。它将成功恢复。

答案 14 :(得分:0)

Frnds ...我在重新启动数据库时遇到了同样的问题并尝试了所有解决方案,但无法解决。然后我尝试重新安装SQL 2005,问题解决了。实际上,上次我忘记在安装SQL时检查自定义选项..它在安装时出现了两次,我只检查了它...

答案 15 :(得分:0)

这可能不是最好的解决方案,但我试图在SQL Server 2005上进行还原,但我改为SQL Server 2008并且它有效。

答案 16 :(得分:0)

很抱歉,因为我无法评论......

我遇到了同样的问题。在我的情况下,问题与尝试在旧的SQL服务器文件夹(存在于服务器上)中进行恢复有关。这是因为在新的SQL Server(SQL Server 2014)中还原了旧的SQL Server备份(即SQL Server 2012备份)。真正的问题与@marc_s答案没有太大区别。无论如何,我只将目标文件夹更改为新的SQL Server DATA文件夹。

答案 17 :(得分:0)

另一种情况可能是存在多个数据库路径。首先,记下当前存储新数据库的路径。因此,如果您创建一个新的空数据库,然后执行Tasks/Restore,请确保还原尝试使用的路径与创建空数据库的目录相同。即使还原路径合法,您也将如果它不是您正在使用的当前路径,仍会获得访问被拒绝错误。当路径不合法时很容易发现,当路径合法时更难发现,而不是当前路径。

答案 18 :(得分:-1)

转到C:\ Program Files \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ DATA \并在出现新窗口时单击“允许访问”

答案 19 :(得分:-2)

然后尝试将其移动到C:下的子文件夹,但验证用户是否拥有您使用的文件夹的完全权限。