代码之家  ›  专栏  ›  技术社区  ›  Smiley

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

  •  123
  • Smiley  · 技术社区  · 14 年前

    下面是我用来备份的查询(创建 .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';
    
    17 回复  |  直到 5 年前
        1
  •  228
  •   Luke Girvin Nathan Bedford    9 年前

    是的,我刚进了这个球。

    在Windows服务中查找。启动管理服务

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

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

    注2 :如果您正在通过网络进行备份,并且您的SQL作为“本地服务”运行,那么您就有麻烦了。。。您可以尝试分配权限,或者在本地备份和跨SQL Server外部复制(一小时后)可能更容易。

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

        2
  •  11
  •   Abuleen    13 年前

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

        3
  •  7
  •   Martin Smith    14 年前

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

        4
  •  6
  •   Jason    12 年前

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

    请记住,执行实际备份数据库命令的sql server的服务帐户需要文件系统的权限,而不是代理。

        5
  •  4
  •   hjavaher gamini2006    11 年前

    full access 但它仍然引起了一些问题。它只在我将目标移动到C的根目录时才起作用,更重要的是从用户文件夹中移出(即使我拥有完全权限的共享——甚至尝试了“Everyone”作为测试)。

    我不知道我是否认为我的问题“已解决”,但它是“工作”。

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

        6
  •  4
  •   Sawarkar vikas    8 年前

    有效的解决方案

    1. 通过键入服务打开服务
    2. 找到并打开SQL Server(SQLExpress)
    3. 选择本地系统帐户(同时检查是否允许服务与桌面交互)
    4. 单击“确定”。停止服务。重新启动服务。
    5. 问题解决了
        7
  •  3
  •   Raghav    6 年前

    您需要转到安装了SQL server的服务器。查找

    enter image description here

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

    enter image description here

    在您的SQL Server(MSSQLSERVER)实例下,将有一个列为Logon As的帐户,在我的例子中是 NT服务\MSSQLSERVER .

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

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

    enter image description here

        8
  •  2
  •   Eric Bernier    14 年前

        9
  •  2
  •   Nikolay Mihaylov Raghu    8 年前

    这是我为解决这个问题所做的。

    1) 转到备份

    3) 单击“添加”

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

    5) 单击“确定”

        10
  •  1
  •   Cem Mutlu    8 年前

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

    BACKUP DATABASE AcinsoftDB
    TO DISK = 'E:\MyDB.Bak'
    WITH FORMAT,
    MEDIANAME = 'C_SQLServerBackups',
    NAME = 'Full Backup of MyDB';
    
        11
  •  1
  •   Gaurav Amatya    5 年前

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

    1. 使用Windows+R打开运行
    2. 查找SQL Server(MSSQLSERVER)
    3. 右键单击并单击属性。
    4. 转到“登录”选项卡
    5. 单击左侧面板上的停止链接,选择“SQL Server(MSSQLSERVER)”,并在完全停止后再次启动它。

    希望它能像对我一样帮助你。干杯!

        13
  •  0
  •   Brad Larson    12 年前

    消息3201,16级,状态1,行1 消息3013,级别16,状态1,行1 备份日志异常终止。

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

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

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

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

    您可以找到security选项卡,单击该选项卡检查您的用户id是否具有访问权限。

    如果找不到您的id,请单击“添加”按钮并提供具有完全访问权限的用户名。

        15
  •  0
  •   Gennady G    8 年前

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

    然后你就可以停止分享了。

    不是很优雅,但它解决了所有的权限问题(您还需要授予共享权限,如上所述)

        16
  •  0
  •   Eric J.    8 年前

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

    网络服务帐户无法解密该文件,并给出了此完全信息性错误消息。

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

        17
  •  0
  •   Hiren Parghi    7 年前

    我也有同样的错误。下面的更改帮助我解决了这个问题。

    我必须检查服务器管理器->工具->服务并找到用户(“日志 对于服务:SQL Server(SQLEXPRESS),打开“作为”列。

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

        18
  •  0
  •   Bipul Roy    7 年前

    嗨,您需要将查询更改为:

    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对我有用。

        19
  •  0
  •   Ramakant Dadhichi    5 年前

    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;
    

    转到您尝试进行备份的位置。在您的情况下:C:\ Users\Me\Desktop\backup

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

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

        20
  •  0
  •   Mr Brigante    5 年前

    在我的例子中,我忘记命名备份文件,它一直给我相同的权限错误:/

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