为 SQL Server 代理服务选择帐户

适用于:SQL ServerAzure SQL 托管实例

重要

Azure SQL 托管实例目前支持大多数(但不是所有)SQL Server 代理功能。 有关详细信息,请参阅 Azure SQL 托管实例与 SQL Server 的 T-SQL 区别

服务启动帐户可以定义运行 SQL Server 代理的 Microsoft Windows 帐户及其网络权限。 SQL Server 代理在指定的用户帐户下运行。 可以使用 SQL Server 配置管理器为 SQL Server 代理服务选择一个帐户,可选帐户如下:

  • 内置帐户。 可以从下列内置 Windows 服务帐户的列表中选择:

    • Local System 帐户。 此帐户的名称是 NT AUTHORITY\System。 它是一个功能强大的帐户,可以不受限制地访问所有本地系统资源。 它是本地计算机的 Windows 管理员组的成员。

    重要

    提供“Local System 帐户”选项只是为了向后兼容。 本地系统帐户具有 SQL Server 代理不需要的权限。 避免使用本地系统帐户运行 SQL Server 代理。 为了提高安全性,请使用具有下面部分“Windows 域帐户权限”中所列出权限的 Windows 域帐户。

  • 本帐户。 使你可以指定运行 SQL Server 代理服务的 Windows 域帐户。 建议选择非 Windows 管理员组成员的 Windows 用户帐户。 但是,当 SQL Server 代理服务帐户不是本地管理员组的成员时,在使用多服务器管理时存在限制。 有关详细信息,请参阅本文后面的“支持的服务帐户类型”。

Windows 域帐户权限

为了提高安全性,可以选择“本帐户”来指定 Windows 域帐户。 指定的 Windows 域帐户必须具有下列权限:

  • 在所有 Windows 版本中,作为服务登录的权限 (SeServiceLogonRight)

    注意

    SQL Server 代理服务帐户必须是域控制器上 Pre-Windows 2000 Compatible Access 组的一部分,否则,非 Windows 管理员组成员的域用户拥有的作业将失败。

  • 在 Windows 服务器中,运行 SQL Server 代理服务的帐户需要具有下列权限才能支持 SQL Server 代理。

    • 跳过遍历检查的权限 (SeChangeNotifyPrivilege)
    • 替换进程级别标记的权限 (SeAssignPrimaryTokenPrivilege)
    • 调整进程的内存配额的权限 (SeIncreaseQuotaPrivilege)
    • 通过网络访问此计算机的权限 (SeNetworkLogonRight)

如果帐户不具有支持代理帐户所需的权限,则只有 sysadmin 固定服务器角色的成员才可创建作业。

必须为 SQL Server 代理的服务帐户授予包含 WMI 事件的命名空间的权限以及 ALTER ANY EVENT NOTIFICATION 权限,才能接收 WMI 警报通知。

SQL Server 角色成员身份

默认情况下,SQL Server 代理服务帐户映射到默认 SQL Server 代理服务 SID (NT SERVICE\SQLSERVERAGENT),它是 sysadmin 固定服务器角色的成员。 如果使用多服务器作业处理,帐户还必须是主服务器上 msdb 数据库角色 TargetServersRole 的成员。 “主服务器向导”将服务帐户自动添加到此角色,以作为登记过程的一部分。

支持的服务帐户类型

下表列出了可用于 SQL Server 代理服务的 Windows 帐户类型。

服务帐户类型 非聚集服务器 群集服务器 域控制器(非聚集)
Microsoft Windows 域帐户(Windows 管理员组的成员) 支持 受支持 支持
Windows 域帐户(非管理) 支持

请参阅下面的限制 1。
支持

请参阅下面的限制 1。
支持

请参阅下面的限制 1。
网络服务帐户 (NT AUTHORITY\NetworkService) 支持

请参阅下方的限制 1、3 和 4。
不支持 不支持
本地用户帐户(非管理) 支持

请参阅下面的限制 1。
不支持 不适用
本地系统帐户 (NT AUTHORITY\System) 支持

请参阅下面的限制 2。
不支持 支持

请参阅下面的限制 2。
本地服务帐户 (NT AUTHORITY\LocalService) 不支持 不支持 不支持

限制 1:针对多服务器管理使用非管理帐户

目标服务器可能无法登记到主服务器,并出现以下错误信息:“登记操作失败”。

若要解决此错误,请重启 SQL Server 和 SQL Server 代理服务。 有关详细信息,请参阅 启动、停止、暂停、继续、重启 SQL Server 服务

限制 2:针对多服务器管理使用本地系统帐户

仅当主服务器和目标服务器位于同一台计算机中,并在本地系统帐户下运行 SQL Server 代理服务时,才支持多服务器管理。 如果使用此配置,则在将目标服务器登记到主服务器时返回以下消息:

“请确保 <target_server_computer_name> 的代理启动帐户拥有以 targetServer 身份登录的权限。”

您可以忽略此信息性消息。 登记操作将成功完成。 有关详细信息,请参阅 创建多服务器环境

限制 3:在网络服务帐户为 SQL Server 用户时使用该帐户

如果在网络服务帐户下运行 SQL Server 代理服务,并显式授予网络服务帐户以 SQL Server 用户身份登录到 SQL Server 实例的访问权限,则可能无法启动 SQL Server 代理。

为了解决此问题,请重新启动运行 SQL Server 的计算机。 此操作仅需执行一次。

限制 4:当同一台计算机中还运行有 SQL Server Reporting Services 时使用网络服务帐户

如果在网络服务帐户下运行 SQL Server 代理服务并且在同一台计算机中还运行 Reporting Services,则可能无法启动 SQL Server 代理。

若要解决此问题,请重新启动运行 SQL Server 的计算机,然后重启 SQL Server 和 SQL Server 代理服务。 此操作仅需执行一次。

常见任务

指定 SQL Server 代理服务的启动帐户

指定 SQL Server 代理的邮件配置文件

注意

使用 SQL Server 配置管理器可以指定启动操作系统时必须启动 SQL Server 代理。