需要授予SQL代理服务帐户权限来执行SQL作业

问题描述 投票:0回答:1

我想知道 [NT SERVICE\SQLSERVERAGENT] 帐户需要什么样的权限才能运行该作业?

以下是已实施的步骤,但作业运行时未达到预期的正确结果。

a.将 SQLAgentOperatorRole 分配给 [NT SERVICE\SQLSERVERAGENT]

b.分配给 [NT SERVICE\SQLSERVERAGENT] 的 SP 执行权限

以下是执行 Stored Proc 的 SQL 作业的条件

  • 所有者为 [NT SERVICE\SQLSERVERAGENT] 且运行用户为 NT SERVICE\SQLSERVERAGENT,则作业失败

  • 所有者为 [NT SERVICE\SQLSERVERAGENT] 且运行用户为空,则作业失败

  • 所有者为 [NT SERVICE\SQLSERVERAGENT],运行用户是我的登录 ID,然后作业运行完美

  • 所有者为空白/sa/任何其他用户,运行用户为 NT SERVICE\SQLSERVERAGENT,则作业失败

该作业不会运行任何错误,而是运行 SP,执行代码但插入较少的记录,例如 150 行而不是 9000 行。我不知道还能做什么。我的目标是 [NT SERVICE\SQLSERVERAGENT] 应该能够在 SQL 作业中执行 SP,并且我的登录名(如第 3 点中提到的)应该被删除。

此外,我还在 msdb 和我的数据库中创建了新用户。代码片段如下

--Step 1: Creating LOGIN in msdb
USE [msdb]     
GO
CREATE LOGIN [SQLServerAgentUser]
    WITH password = N'Version1!'
GO

--Step 2: Creating user in msdb
USE [msdb]
GO
CREATE USER  [SQLServerAgentUser] FOR LOGIN [SQLServerAgentUser]

----Step 3: Role assignment
USE [msdb]
GO
ALTER ROLE [SQLAgentOperatorRole] ADD MEMBER [SQLServerAgentUser]
GO

----Step 4: Creating user in MYDB

USE [Mydb]
GO
CREATE USER [SQLServerAgentUser] FOR LOGIN [SQLServerAgentUser]

----Step 5: Granting execute rights on Stored Proc
USE [Mydb]
GRANT Execute ON [Dim].[USP_PopulateDimProjectOutlook] TO [SQLServerAgentUser]

GRANT EXECUTE ON [Dim].[USP_DL_PopulateCommissionLiveData] TO [SQLServerAgentUser]

到目前为止,所有步骤都不起作用!

我的目标是不是由员工运行作业,而是由 SQL Server 代理/服务帐户运行作业。

P.S.:我没有通过 SQL 作业运行 SSIS 包。我正在运行 EXEC 存储过程。

让我知道我做错了什么

sql-server job-scheduling sql-agent-job sql-agent
1个回答
0
投票

我的目标是不是由员工运行作业,而是由 SQL Server 代理/服务帐户运行作业。

您所要做的就是以系统管理员身份创建该职位,因为

“sysadmin 角色的成员有权创建不指定代理的作业步骤,而是作为 SQL Server 代理服务帐户运行,该帐户用于启动 SQL Server 代理。”

实施 SQL Server 代理安全性

无需授予[NT SERVICE\SQLSERVERAGENT]任何额外的权限;它已经是系统管理员了。

© www.soinside.com 2019 - 2024. All rights reserved.