无法打开备份设备。操作系统错误 5
Posted
技术标签:
【中文标题】无法打开备份设备。操作系统错误 5【英文标题】:Cannot open backup device. Operating System error 5 【发布时间】:2011-04-26 23:48:39 【问题描述】:下面是我用来备份(创建.bak
)我的数据库的查询。
但是,每当我运行它时,我总是会收到以下错误消息:
消息 3201,第 16 级,状态 1,第 1 行 无法打开备份设备“C:\Users\Me\Desktop\Backup\MyDB.Bak”。操作系统错误 5(访问被拒绝。)。
消息 3013,第 16 级,状态 1,第 1 行 BACKUP DATABASE 异常终止。
这是我的查询:
BACKUP DATABASE AcinsoftDB
TO DISK = 'C:\Users\Me\Desktop\Backup\MyDB.Bak'
WITH FORMAT,
MEDIANAME = 'C_SQLServerBackups',
NAME = 'Full Backup of MyDB';
【问题讨论】:
嗯,错误信息很清楚,不是吗?程序以什么用户身份运行? bak 文件是否存在?可以手动访问吗? 我们是否应该假设这是来自文件路径的 SQL Server,因为您没有将产品放在标签或标题中? 如果有帮助,我可以在重新格式化笔记本电脑之前运行此查询。这是 SQL Server 2008,我以管理员身份运行。 bak 文件不存在,因为我正在使用此查询创建它。 @Smiley Face:您必须通过本地而非网络读取 SQL 文件。因此,这意味着您必须先将 SQL 文件从网络移动到本地驱动器,然后再进行恢复。 sqlbak.com/blog/… 【参考方案1】:是的,我刚进了这个。
查看 Windows 服务。开始 > 管理 > 服务
在名为的列表中查找服务:SQL Server (MSSQLSERVER) 查找“登录为”列(如果列表中不存在则需要添加)。
这是您需要授予目录权限的帐户,右键单击资源管理器 > 属性 > 共享(和安全)
注意:如果您要通过网络访问,请记住授予实际目录和共享的权限。
申请并等待权限传播,再次尝试备份。
注意 2:如果您正在通过网络备份并且您的 SQL 正在作为“本地服务”运行,那么您就有麻烦了……您可以尝试分配权限,或者可能更容易在本地备份并在 SQL Server 外部进行 xcopy(一小时后)。
注意 3:如果您作为网络服务运行,那么有时远程计算机将无法识别您 SQL Server 上的网络服务。如果是这种情况,您需要为实际计算机本身添加权限,例如。我的服务器 $。
【讨论】:
权限/添加/高级没有在列表中找到用户,但我粘贴在“NT Service\MSSQLSERVER”中,它就像一个冠军。 向文件夹添加“所有人”权限是否涵盖了这一点? 取决于,如果它是真正公开的未经身份验证的,那么是的。如果它是“任何经过身份验证的”,那么远程机器上的 LOCAL SERVICE 通常不符合条件......但你真的想让每个人都可以访问吗,对我们来说这几乎是可以解雇的冒犯。 对我不起作用,我只是备份到 C:\temp\。即使按照@Mark A 的建议粘贴,文件夹权限屏幕也无法识别服务使用的登录NT Service\MSSQLSERVER。该服务是否有一个好的替代帐户可供使用? 为我工作,很好的解决方案!我正在使用 SQL Server Express 2014,因此您需要向“NT Service\MSSQL$SQLEXPRESS”授予写权限。【参考方案2】:转到开始菜单中的 SQL Server 文件夹,然后单击配置工具 选择 SQL Server 配置管理器 在 SQL Server 服务上,在所需实例上将(登录为)更改为本地系统
【讨论】:
【参考方案3】:SQL Server 服务帐户无权写入文件夹C:\Users\Kimpoy\Desktop\Backup\
【讨论】:
如何授予 SQL Server 服务帐户访问此文件夹的权限? :)【参考方案4】:我最近也遇到了这个问题,但是我正在从服务器 A 运行备份作业,但正在备份的数据库在服务器 B 上,并在服务器 C 上的文件共享中。当服务器 A 上的代理告诉服务器 B 运行时一个备份 t-sql 命令,它实际上是 sql 在服务器 B 上运行的服务帐户,它试图将备份写入服务器 C。
请记住,执行实际 BACKUP DATABASE 命令的 sql 服务器的服务帐户需要文件系统的权限,而不是代理。
【讨论】:
【参考方案5】:我在 Windows 10 上使用 SQL Express 2014 SP1 时遇到了同样的问题。
有效的解决方案
-
通过键入服务打开服务
找到并打开 SQL Server (SQLExpress)
转到登录选项卡
选择本地系统帐户(同时检查允许服务与桌面交互)
单击确定。停止服务。重新启动服务。
问题已解决
【讨论】:
【参考方案6】:发生这种情况的原因之一是您正在运行您的 MSSQLSERVER 服务而不是使用本地系统。要解决此问题,请使用以下步骤。
-
使用 Windows + R 打开运行
输入 services.msc 会打开一个服务对话框
查找 SQL Server (MSSQLSERVER)
右键单击并单击属性。
转到登录选项卡
选择本地系统帐户并点击“应用”和“确定”
通过选择“SQL Server (MSSQLSERVER)”单击左侧面板上的停止链接,并在完全停止后重新启动它。
享受您的备份。
希望它对您有所帮助,就像它对我一样。干杯!
【讨论】:
【参考方案7】:为了找出您需要授予哪个用户执行恢复过程的权限,您可以按照以下步骤操作:
您需要转到安装了 SQL Server 的服务器。查找 SQL Server 配置管理器
接下来,你需要进入“SQL Server Services”
在您的 SQL Server (MSSQLSERVER) 实例下,将有一个包含“登录身份”列的帐户,在我的例子中是 NT Service\MSSQLSERVER。
这是您需要在源 .bak 位置的安全选项卡下添加的帐户,并授予该用户“读取”权限,以便可以读取备份文件。
假设您的备份文件存在于“D:\Shared”文件夹中,那么您需要像这样授予权限:
【讨论】:
为我工作。在我的情况下,服务器位于 AD 域中,但用户 MSSQLSERVER 是本地计算机用户,可能需要更改“选择用户或组”窗口中的“来自此位置:”。【参考方案8】:我自己刚刚经历过这个。我确保我的 MSSQLSERVER 登录用户拥有full access
,但它仍然会导致问题。它仅在我将目标移动到 C 的根目录时才起作用。更重要的是,从用户文件夹中移出(即使我有一个具有完全权限的共享 - 甚至尝试过“所有人”作为测试)。
我不知道我是否认为我的问题“已解决”,但它正在“工作”。
对于遇到此线程的任何其他用户,仅供参考。
【讨论】:
我认为这是由于企业域的用户路径驻留在网络驱动器上,因此用户可以透明地访问它们,而不管他们登录的机器是什么。比如这种情况:superuser.com/a/730519 @Bon 谢谢!这为我解决了这个问题。我保存备份文件的路径实际上是网络路径。【参考方案9】:我遇到了类似的问题。我添加了对 .bak 文件本身的写入权限,以及我为 NETWORK SERVICE 用户写入备份的文件夹。要添加权限,只需右键单击要更改的文件/目录,选择安全选项卡,然后在其中添加适当的用户/权限。
【讨论】:
合适是什么意思?【参考方案10】:这是我为绕过这个问题所做的。
1) 转到备份
2) 删除磁盘的目标文件路径
3) 点击添加
4) 在文件名:复选框中手动在 ..\backup 后键入备份名称,如下所示,其中 Yourdb.bak 是数据库备份名称
C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\Yourdb.bak
5) 点击确定
希望这会有所帮助!
【讨论】:
【参考方案11】:我知道这不是一个精确的解决方案,但使用外部驱动器路径可以解决这个问题。
BACKUP DATABASE AcinsoftDB
TO DISK = 'E:\MyDB.Bak'
WITH FORMAT,
MEDIANAME = 'C_SQLServerBackups',
NAME = 'Full Backup of MyDB';
【讨论】:
【参考方案12】:SQL Server 无法访问(写入)备份到指定位置。
首先您需要验证运行 Sql 服务器的服务帐户。这可以通过使用配置管理器或 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
右键-->属性-->安全-->
添加服务帐号并提供读/写权限。这将解决问题。
【讨论】:
【参考方案13】:在我的情况下,我忘记命名备份文件并且它一直给我同样的权限错误:/
TO DISK N'path\WRITE_YOUR_BACKUP_FILENAME_HERE.bak'
【讨论】:
【参考方案14】:我通过以下 3 个步骤解决了同样的问题:
-
我将备份文件存储在其他正常工作的文件夹路径中。
查看不同的安全选项卡两个文件夹(如下图)。
安全选项卡文件夹中的编辑权限不正确。
【讨论】:
【参考方案15】:我遇到了同样的问题,下面的网址确实对我有帮助。
也许对你也有帮助。
http://blog.sqlauthority.com/2011/04/13/sql-server-fix-error-msg-3201-level-16-cannot-open-backup-device-operating-system-error-5access-is-denied/
【讨论】:
【参考方案16】:消息 3201,第 16 级,状态 1,第 1 行 无法打开备份设备“C:\Backup\Adventure_20120720_1024AM.trn”。操作系统错误 5(拒绝访问。)。 消息 3013,第 16 级,状态 1,第 1 行 BACKUP LOG 异常终止。
我验证了C盘上的备份文件夹,新服务帐户是否具有完全控制访问权限?,我意识到“Test\Kiran”服务帐户没有完全控制安全权限。
请按照以下步骤完全控制服务帐户:
-
转到 C 盘,右键单击备份文件夹。
选择安全选项卡。
单击编辑按钮,将打开新窗口。
单击添加按钮并输入 Test\Kiran 用户帐户并单击检查名称按钮,这将验证您输入的用户是否存在,如果存在,它将在窗口中显示该用户,选择确定。
选择您输入的用户名并选中允许下的完全控制复选框。
【讨论】:
【参考方案17】:请检查对驱动器的访问。首先创建一个文件夹并转到文件夹属性,
您可能会找到安全选项卡,单击它检查您的用户 ID 是否具有访问权限。
如果找不到您的 id,请单击添加按钮并提供具有完全访问权限的用户名。
【讨论】:
【参考方案18】:共享此文件夹并使用 UNC 路径,例如:\pc\backups\mydb.bak
然后你就可以停止分享了。
不是很优雅,但它解决了所有权限问题(如上所述,您还需要授予共享权限)
【讨论】:
【参考方案19】:当 .BAK 文件临时存储在使用 BitLocker 加密的文件夹中时,我遇到了这个问题。它在移动到不同的文件夹后保留了加密。
NETWORK SERVICE 帐户无法解密该文件,并给出了这条信息全面的错误消息。
删除 .BAK 文件上的 BitLocker 加密(通过取消选中文件属性中的“加密内容以保护数据”)解决了该问题。
【讨论】:
【参考方案20】:我有同样的错误。以下更改帮助我解决了这个问题。
我必须检查服务器管理器->工具->服务并找到用户(“日志 在 As" 列)用于服务:SQL Server (SQLEXPRESS)。
我去了本地文件夹(C:\Users\Me\Desktop\Backup)并添加了“NT Service\MSSQL$SQLEXPRESS”作为用户赋予写权限。
【讨论】:
【参考方案21】:您好,您需要从以下位置更改查询:
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 对我有用。
【讨论】:
【参考方案22】:我的问题是“文件所有权”设置为我的公司。我将其更改为“个人”并且有效。右键单击该文件并单击“文件所有权>”选项,然后将其更改为“个人”。我相信通过 Microsoft Teams 发送的所有文件都会发生这种情况。
【讨论】:
以上是关于无法打开备份设备。操作系统错误 5的主要内容,如果未能解决你的问题,请参考以下文章