使用 Ola Hallengrens 备份脚本获取代理帐户以备份到共享

Law*_*age 5 sql-server permissions sql-server-2012 sql-server-agent ola-hallengren

我有一个 SQL Server 2012 Standard 安装,其中引擎和代理在默认 NT 服务帐户下运行

引擎 - NT 服务\MSSQLSERVER

代理 - NT 服务\SQLSERVERAGENT

我试图让 Ola Hallengrens 备份脚本备份到网络共享,但这证明有点问题。通常我会让引擎和代理在域帐户下运行并授予这些访问网络共享的权限,它会正常工作,但是这是在我之前设置的,无法更改这些。

由于代理和引擎不在域帐户下运行,我试图使用代理来使其正常工作。

我有一个共享\\ComputerName\Folder和一个服务帐户Domain\account.svc。我可以使用该Domain\account.svc帐户浏览和创建文件和文件夹,因此访问似乎正常。但是,当通过代理运行它时,它不起作用。

我做了什么。

  • 使用创建凭据 Domain\account.svc
  • 创建操作系统 (CmdExec) 代理并将其链接到凭据
  • 在备份系统数据库作业步骤中,将“运行方式”设置为代理帐户

我在日志文件中得到的错误是

消息 50000,级别 16,状态 1,服务器 [服务器名称],过程 DatabaseBackup,第 457 行
目录 \\ComputerName\Folder 不存在。

Msg 50000, Level 16, State 1, Server [SERVER NAME], Procedure DatabaseBackup, Line 740 该文档可在https://ola.hallengren.com/sql-server-backup.html 获得

这与您通常在代理域帐户无权访问共享时遇到的错误相同。

问题 - 有人可以解释为什么这不起作用。

谢谢。

编辑 1:Domain\account.svc 对共享具有完全控制权,是机器上的本地管理员以及 SQL 中的系统管理员。

编辑 2:在我的桌面上安装了 SQL 的测试实例,并且能够复制该问题。当我将引擎和代理服务帐户更改为在 Domain\account.svc 下运行时,备份成功完成到共享。

编辑 3:不是一个理想的解决方案,但现在我正在本地备份并设置了一个 robocopy 作业以将目录镜像到共享。

Ole*_*kii 2

为此,您需要向已安装 SQL Server 的计算机域帐户授予写入 [ComputerName] 上的共享 [Folder] 的权限。

假设您有一台计算机 SRV-SQLSERVER,并且使用 NT Service* 运行 SQL 服务,但在某些情况下您无法为它们创建域帐户。但您需要将备份存储在其他域服务器\SRV-BACKUP上。

要使其正常工作,请在\\SRV-BACKUP\Folder上创建共享,并为 SQL 框域帐户DOMAIN\SRV-SQLSERVER$授予写入权限

一些相关信息可以在这里找到:

如何授予本地系统帐户网络访问权限?