-->

SQL Agent Job - “Run As” drop down list is empty

2020-06-01 04:06发布

问题:

Why is the "Run As" drop down list is always empty when I try to set up a SQL Agent Job? I am trying to set up some SQL Agent Jobs to run using a proxy account. I am a member of the SQLAgentUserRole, SQLAgentReaderRole, and SQLAgentOperatorRole. When I try to add a step to to the job, I select SQL Integration Services Package and the Run As drop down list is empty.

Anyone who is a sysadmin can view the proxy. Shouldn't I be able to use the proxy as a member of SQLAgentUserRole, SQLAgentReaderRole, and SQLAgentOperatorRole? What am I missing here?

(The proxy account is active to the subsystem: SQL Integration Service Packages and this is SQL Server 2008 R2)

EDIT -

MSDN: "Members of these database roles (SQLAgentUserRole, SQLAgentReaderRole, and SQLAgentOperatorRole) can view and execute jobs that they own, and create job steps that run as an existing proxy account." And this other article on fixed server roles mentions that access can be granted to proxies, but it does not mention how to do it: MSDN.

回答1:

I found the answer to this. Users who are not sysadmin have to have access to the proxy account explicitly granted to their role or username:

To grant access to proxy accounts for non-sysadmins

  1. In Object Explorer, expand a server.
  2. Expand SQL Server Agent.
  3. Expand Proxies, expand the subsystem node for the proxy, right-click the proxy you wish to modify, and click Properties.

On the General page, you can change the proxy account name, credential, or the subsystem it uses. On the Principals page, you can add or remove logins or roles to grant or remove access to the proxy account.

http://msdn.microsoft.com/en-us/library/ms187890(v=sql.100).aspx



回答2:

  1. When editing the job step - switch to "Advanced" tab on the left, don't use the dropdown on the main page.
  2. Make sure the user is granted a role in the job database, even if he's a "sysadmin"

(the screenshot is for SSMS 17)



回答3:

No, you shouldn't. Memebers of the roles you just mentioned can only create jobs that run as themselfes because they are non-administrative roles. If you want to run a job using antoher user, you'll need access to a proxy account. If I'm not mistaken, the only group that has access to create proxy accounts is sysadmin, so you'll need an admin to do that for you.

Members of the sysadmin role have permission to create job steps that do not specify a proxy, but instead run as the SQL Server Agent service account, which is the account that is used to start SQL Server Agent.