我正在尝试根据此问题NT Service\SQLSERVERAGENT中的标记答案授予 Windows 帐户文件系统访问权限。我相信它是一个虚拟服务帐户,它没有显示在控制面板 -> 用户帐户区域。
NT Service\SQLSERVERAGENT
如何授予此服务帐户对文件系统的访问权限?具体来说,在 Windows 7 上。
我已经阅读了几种方法,但似乎没有一种方法适合我。我尝试了 PowerShell 方法,但 AD 命令不是有效命令。我什至下载并安装了这些命令所需的 Windows 补丁。我还读到我应该能够通过 SQL Server 配置管理器或 Management Studio 执行此操作。不过,我似乎无法弄清楚在哪里调整这些权限。
SQL Server 代理进程无法启动,并显示以下错误消息:
sql Login failed for user 'NT SERVICE\SQLSERVERAGENT'. Reason: Failed to open the explicitly specified database 'msdb'. [CLIENT: <local machine>]
根据我的谷歌搜索,它与此帐户的权限有关。
我不确定数据库是否损坏,但它说数据库处于正常状态。SQL Server 代理登录是sysadmin和public组的一部分。
sysadmin
public
为了具体回答您的问题,以下是您如何授予内置 SQL Server 代理帐户的磁盘访问权限。但请继续阅读,因为我回答了我认为真正的问题:
1.> 右键单击您的驱动器,选择属性,选择安全性,单击添加按钮并输入 SQLSERVERAGENT 帐户(确保您的域未在从该位置文本框中选择,而是您的计算机名称):
2.> 单击检查名称按钮以验证帐户是否有效:
3.> 现在,将您需要的文件权限添加到 SQLSERVERAGENT 帐户。出于故障排除的目的,您可能希望提供完全控制权,然后根据需要将其缩小:
话虽如此,您可能只需要使用 SQL Server 配置管理器重新添加 SQL 代理用户——根据我看到的有关 msdb 和登录的评论。与使用 Windows 服务小程序相比,配置管理器对 SQL Server 所做的更改更多——因此配置管理器应始终用于更改任何 SQL 服务。
如果有人更改了 Windows 服务中的帐户导致服务在启动时失败,这将解决问题。您需要在配置管理器中重置它。这样做允许配置管理器向 SQL Server 添加急需的权限来管理本地服务帐户 (NT SERVICE\SQLSERVERAGENT) 的 MSDB 数据库,而在 Windows 服务小程序中更改帐户则不能。
警告:2000 以上版本的 SQL Server Express 不包括 SQL 代理。它的某些方面似乎存在,但在产品的 Express 版本中无法使用。
首先,打开 SQL Server 配置管理器并双击 SQL Server 服务中的 SQL Server 代理服务。选择内置帐户单选按钮并选择本地服务,然后单击应用按钮。重要提示:如果您已经看到选择了此帐户,请选择另一个帐户并单击应用按钮。然后,将其更改回本地服务并单击应用按钮以允许配置管理器添加正确的 MSDB 权限以启动 SQL 代理服务。现在,重新启动 SQL Server 代理以反映这个新设置。