【问题标题】:Cannot open backup device. Operating System error 5无法打开备份设备。操作系统错误 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 文件从网络移动到本地驱动器,然后再进行恢复。

标签: sql-server-2008 backup access-denied permission-denied


【解决方案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 时遇到了同样的问题。

      有效的解决方案

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

      【讨论】:

        【解决方案6】:

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

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

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

        【讨论】:

          【解决方案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 个步骤解决了同样的问题:

                  1. 我将备份文件存储在其他正常工作的文件夹路径中。
                  2. 查看不同的安全选项卡两个文件夹(如下图)。
                  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”服务帐户没有完全控制安全权限。

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

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

                      【讨论】:

                        【解决方案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 发送的所有文件都会发生这种情况。

                                  【讨论】:

                                    猜你喜欢
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 2017-01-19
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 2018-08-23
                                    相关资源
                                    最近更新 更多