164

下面是我用来备份(创建.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';
4

22 回答 22

266

是的,我刚打了这个。

查看 Windows 服务。开始 > 管理 > 服务

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

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

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

申请并等待权限传播,再次尝试备份。

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

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

于 2011-10-24T02:18:00.303 回答
18

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

于 2012-03-21T17:34:13.510 回答
7

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

于 2010-10-18T15:04:06.553 回答
6

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

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

于 2012-10-03T02:47:26.250 回答
6

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

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

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

于 2019-07-03T06:43:24.760 回答
6

我在 Windows 10 上使用 SQL Express 2014 SP1 时遇到了同样的问题。

有效的解决方案

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

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

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

在此处输入图像描述

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

在此处输入图像描述

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

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

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

在此处输入图像描述

于 2018-10-06T04:48:28.017 回答
4

我自己只是在经历这个。我已经确保我的 MSSQLSERVER 登录用户有full access,但它仍然导致问题。它仅在我将目标移动到 C 的根目录时才起作用。更重要的是,它从用户文件夹中移出(即使我有一个具有完全权限的共享 - 甚至尝试过“所有人”作为测试)。

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

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

于 2014-04-02T18:13:23.253 回答
2

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

于 2011-04-19T14:31:25.593 回答
2

这是我为绕过这个问题所做的。

1) 去备份

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

3) 点击添加

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

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

5) 点击确定

希望这可以帮助!

于 2016-08-29T06:45:10.997 回答
1

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

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

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

于 2019-08-28T13:13:16.923 回答
1

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

TO DISK N'{path}\WRITE_YOUR_BACKUP_FILENAME_HERE.bak'
于 2020-02-03T10:58:40.463 回答
1

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

BACKUP DATABASE AcinsoftDB
TO DISK = 'E:\MyDB.Bak'
WITH FORMAT,
MEDIANAME = 'C_SQLServerBackups',
NAME = 'Full Backup of MyDB';
于 2016-07-07T11:42:44.407 回答
1

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

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

在此处输入图像描述

于 2020-07-24T13:06:45.777 回答
0

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

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

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

于 2013-08-21T12:23:44.560 回答
0

我遇到了同样的问题,下面的网址确实对我有帮助。

它也可能对您有所帮助。

http://blog.sqlauthority.com/2011/04/13/sql-server-fix-error-msg-3201-level-16-cannot-open-backup-device-operating-system-error-5access-is-拒绝/

于 2013-03-28T12:09:45.703 回答
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. 选择您输入的用户名并选择允许下的完全控制复选框。
于 2013-06-06T09:35:30.303 回答
0

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

然后你可以停止分享。

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

于 2016-09-24T09:16:14.307 回答
0

I experienced this problem when the .BAK file was temporarily stored in a folder encrypted with BitLocker. It retained the encryption after it was moved to a different folder.

The NETWORK SERVICE account was unable to decrypt the file and gave this thoroughly informative error message.

Removing BitLocker encryption (by unchecking "Encrypt contents to secure data" in the file properties) on the .BAK file resolved the issue.

于 2016-10-25T20:05:48.267 回答
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 对我有用。

于 2017-05-08T02:42:46.280 回答
0

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

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

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

于 2017-12-12T13:32:48.767 回答
0

我的问题是“文件所有权”设置为我的公司。我将其更改为“个人”并且有效。右键单击该文件并单击“文件所有权>”选项,然后将其更改为“个人”。我相信通过 Microsoft Teams 发送的所有文件都会发生这种情况。

于 2021-01-26T17:46:24.537 回答