无法打开备份设备。操作系统错误5


138

以下是我用来备份(创建.bak)数据库的查询。

但是,无论何时运行它,我总是会收到以下错误消息:

消息3201,级别16,状态1,行1
无法打开备份设备'C:\ Users \ Me \ Desktop \ Backup \ MyDB.Bak'。操作系统错误5(访问被拒绝。)。

消息3013,级别16,状态1,行1
备份数据库异常终止。

这是我的查询:

BACKUP DATABASE AcinsoftDB
TO DISK = 'C:\Users\Me\Desktop\Backup\MyDB.Bak'
WITH FORMAT,
MEDIANAME = 'C_SQLServerBackups',
NAME = 'Full Backup of MyDB';

好吧,错误消息很清楚,不是吗?程序以什么用户身份运行?bak文件是否存在?可以手动访问吗?
Pekka 2010年

1
因为您没有将产品放在标签或标题中,我们是否应该从文件路径中假设这是针对SQL Server的?
Powerlord

如果能够对笔记本电脑重新格式化,则可以运行该查询。这是SQL Server 2008,我以管理员身份运行。bak文件不存在,因为我正在使用此查询创建它。
笑脸

@Smiley Face:您必须通过本地而不是网络读取SQL文件。因此,这意味着您必须先将SQL文件从网络移动到本地驱动器,然后将其还原。
mrjimoy_13年

Answers:


234

是的,我刚刚给了这个分数。

在Windows服务中查找。开始>管理>服务

在名为:SQL Server(MSSQLSERVER)的列表中找到该服务,查找“登录身份”列(如果列表中不存在,则需要添加)。

这是您需要授予目录权限的帐户,右键单击资源管理器>属性>共享(和安全性)

注意:请记住,如果要通过网络访问,请授予对实际目录和共享的权限。

应用并等待权限传播,然后再次尝试备份。

注意2:如果您正在通过网络进行备份并且SQL以“本地服务”的身份运行,那么您将遇到麻烦...您可以尝试分配权限,否则在SQL Server外部进行本地备份和xcopy可能会更容易(一小时后)。

注意3:如果您以网络服务的身份运行,则有时远程计算机将无法识别SQL Server上的网络服务。如果是这种情况,则需要为实际计算机本身添加权限,例如。MyServer $。


20
权限/添加/高级在列表中找不到用户,但是我粘贴了“ NT Service \ MSSQLSERVER”,它像冠军一样工作。
标记为A

3
在文件夹中添加“所有人”权限是否可以解决此问题?
DevDave

3
取决于,如果它是真正的公共未认证的,则为是。如果它是“已认证的任何东西”,那么在远程计算机上的本地服务通常将不符合条件……但是您真的要授予所有人访问权限,对我们来说这是几乎可以解决的罪行。
罗宾·威西

1
不适用于我,我只是备份到C:\ temp \。“文件夹权限”屏幕只是无法识别服务NT Service \ MSSQLSERVER使用的登录,即使按@Mark A的建议进行粘贴也是如此。是否有该服务可以使用的替代帐户?
MGOwen

8
为我工作,很好的解决方案!我正在使用SQL Server Express 2014,因此您需要将写入权限授予“ NT Service \ MSSQL $ SQLEXPRESS”。
mikhail-t 2015年

11

转到开始菜单中的SQL Server文件夹,然后单击配置工具。选择SQL Server配置管理器。在SQL Server服务上,在所需实例上,将(登录身份)更改为本地系统。


7

SQL Server服务帐户没有写该文件夹的权限 C:\Users\Kimpoy\Desktop\Backup\


22
如何授予SQL Server服务帐户访问此文件夹的权限?:)
Smiley

6

我最近也遇到了这个问题,但是我正在从服务器A运行备份作业,但是正在备份的数据库在服务器B上到服务器C的文件共享中。当服务器A上的代理告诉服务器B运行备份t -sql命令,它实际上是sql在SERVER B上运行的服务帐户,试图将备份写入服务器C。

请记住,执行实际BACKUP DATABASE命令的sql服务器的服务帐户是需要文件系统特权的代理,而不是代理。


4

我只是自己经历。我确保我的MSSQLSERVER登录用户具有full access但仍然会引起问题。仅当我将目标位置移至C的根目录后,它才起作用。更重要的是,将其移出了用户文件夹(即使我拥有具有完全权限的共享-甚至尝试了“所有人”作为测试)。

我不知道我的问题是否“已解决”,但是正在“解决”中。

仅供参考,以供遇到此线程的任何其他用户使用。


1
我认为这是由企业域引起的,这些企业域的用户路径位于网络驱动器上,因此无论用户登录到什么计算机,用户都可以透明地访问它们。例如这种情况:superuser.com/a/730519
2013年

@邦谢谢!这为我解决了问题。我拥有备份文件的路径实际上是网络路径。
1

4

我在Windows 10上遇到SQL Express 2014 SP1的相同问题。

解决方案

  1. 通过键入服务来打开服务
  2. 找到并打开SQL Server(SQLExpress)
  3. 转到“登录”选项卡
  4. 选择“本地系统帐户”(还要检查“允许服务与桌面交互”)
  5. 单击确定。停止服务。重新启动服务。
  6. 问题解决了

3

为了找出需要授予权限的用户来执行还原过程,可以按照以下步骤操作:

您需要转到安装了SQL Server的服务器。查找SQL Server配置管理器

在此处输入图片说明

接下来,您需要转到“ SQL Server服务”

在此处输入图片说明

在您的SQL Server(MSSQLSERVER)实例下,将有一个“列为”列的帐户,在我的情况下是NT Service \ MSSQLSERVER

这是您需要在源.bak位置的“安全性”选项卡下添加的帐户,并向该用户授予“读取”权限,以便可以读取备份文件。

假设您的备份文件位于“ D:\ Shared”文件夹中,那么您需要授予以下权限:

在此处输入图片说明


2

我有一个类似的问题。我为.bak文件本身添加了写权限,并且为NETWORK SERVICE用户添加了备份的文件夹。要添加权限,只需右键单击要更改的文件/目录,选择“安全性”选项卡,然后在此处添加适当的用户/权限。


1
你是什​​么意思?
Steam

2

这是我为绕过此问题所做的工作。

1)备份

2)删除磁盘的目标文件路径

3)点击添加

4)在“文件名:”框中,在.. \ backup后面手动键入备份名称,如下所示,其中Yourdb.bak是数据库备份名称

C:\ Program Files \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ Backup \ Yourdb.bak

5)点击确定

希望这可以帮助!


2

发生这种情况的原因之一是您在不使用本地系统的情况下运行MSSQLSERVER服务。要解决此问题,请使用以下步骤。

  1. 使用Windows + R开放运行
  2. 键入services.msc,将打开一个服务对话框
  3. 查找SQL Server(MSSQLSERVER)
  4. 右键单击并单击属性。
  5. 转到登录标签
  6. 选择本地系统帐户,然后单击“应用”和“确定”
  7. 通过选择“ SQL Server(MSSQLSERVER)”,单击左侧面板上的“停止”链接,并在完全停止后再次启动它。
  8. 祝您备份愉快。

希望它能对您有所帮助,就像对我一样。干杯!


1

我知道这不是一个精确的解决方案,但是使用外部驱动器路径可以解决此问题。

BACKUP DATABASE AcinsoftDB
TO DISK = 'E:\MyDB.Bak'
WITH FORMAT,
MEDIANAME = 'C_SQLServerBackups',
NAME = 'Full Backup of MyDB';

1

SQL Server无法将备份访问(写入)到指定的位置。

首先,您需要验证运行Sql Server的服务帐户。这可以通过使用配置管理器或Services.msc来完成。

要么

使用以下查询:

SELECT  DSS.servicename,
    DSS.startup_type_desc,
    DSS.status_desc,
    DSS.last_startup_time,
    DSS.service_account,
    DSS.is_clustered,
    DSS.cluster_nodename,
    DSS.filename,
    DSS.startup_type,
    DSS.status,
    DSS.process_id FROM    sys.dm_server_services AS DSS;

现在查看列service_account并记下它。

转到要进行备份的位置。对于您的情况:C:\ Users \ Me \ Desktop \ Backup

右键单击->属性->安全->

添加服务帐户并提供读/写权限。这样可以解决问题。



0

消息3201,级别16,状态1,第1行无法打开备份设备'C:\ Backup \ Adventure_20120720_1024AM.trn'。操作系统错误5(访问被拒绝。)。消息3013,级别16,状态1,行1备份日志异常终止。

我验证了C盘上的备份文件夹,新服务帐户是否具有完全控制访问权限?,我意识到“ Test \ Kiran”服务帐户没有完全控制安全权限。

请按照以下步骤完全控制服务帐户:

  1. 转到C盘,右键单击“备份”文件夹。
  2. 选择安全性选项卡。
  3. 单击编辑按钮,将打开新窗口。
  4. 单击添加按钮,然后输入Test \ Kiran用户帐户,然后单击检查名称按钮,这将验证您输入的用户是否存在,如果存在,它将在窗口中显示该用户,选择确定。
  5. 选择您输入的用户名,然后选中“允许”下的“完全控制”复选框。

0

请检查对驱动器的访问。首先创建一个文件夹,然后转到文件夹属性,

您可能会找到安全选项卡,然后单击以检查您的用户ID是否具有访问权限。

如果找不到您的ID,请单击添加按钮,然后授予具有完全访问权限的用户名。


0

共享此文件夹并使用UNC路径,例如:\ pc \ backups \ mydb.bak

然后,您可以停止共享。

不太优雅,但是可以解决所有权限问题(如上所述,您还需要授予共享权限)


0

.BAK文件临时存储在使用BitLocker加密的文件夹中时,我遇到了此问题。移动到另一个文件夹后,它保留了加密功能。

NETWORK SERVICE帐户无法解密该文件,并给出了此详尽的错误消息。

删除.BAK文件上的BitLocker加密(通过取消选中文件属性中的“加密内容以保护数据安全”)可以解决此问题。


0

我有同样的错误。进行以下更改有助于我解决此问题。

我必须检查“服务器管理器”->“工具”->“服务”,并找到用于服务的用户(“登录身份”列):SQL Server(SQLEXPRESS)。

我转到本地文件夹(C:\ Users \ Me \ Desktop \ Backup),并添加了“ NT Service \ MSSQL $ SQLEXPRESS”作为授予写权限的用户。


0

嗨,您需要从以下位置更改查询:

BACKUP DATABASE AcinsoftDB
TO DISK = 'C:\Users\Me\Desktop\Backup\MyDB.Bak'

BACKUP DATABASE AcinsoftDB
TO DISK = N'C:\Users\Me\Desktop\Backup\MyDB.Bak'

您必须在对我有用的路径前面添加N。


0

就我而言,我忘记命名备份文件,并且它一直给我同样的权限错误:/

TO DISK N'{path}\WRITE_YOUR_BACKUP_FILENAME_HERE.bak'

0

我通过以下3个步骤解决了相同的问题:

  1. 我将备份文件存储在其他工作正常的文件夹路径中。
  2. 查看不同的安全选项卡两个文件夹(如下图所示)。
  3. 在安全选项卡文件夹中编辑权限不正确。

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.