21

当我尝试设置 SQL 代理作业时,为什么“运行方式”下拉列表总是空的?我正在尝试设置一些 SQL 代理作业以使用代理帐户运行。我是 SQLAgentUserRole、SQLAgentReaderRole 和 SQLAgentOperatorRole 的成员。当我尝试向作业添加步骤时,我选择了 SQL Integration Services 包,并且运行方式下拉列表为空。

任何系统管理员都可以查看代理。我不应该能够将代理用作 SQLAgentUserRole、SQLAgentReaderRole 和 SQLAgentOperatorRole 的成员吗?我在这里想念什么?

(代理帐户对子系统有效:SQL 集成服务包,这是 SQL Server 2008 R2)

编辑 -

MSDN:“这些数据库角色(SQLAgentUserRole、SQLAgentReaderRole 和 SQLAgentOperatorRole)的成员可以查看和执行他们拥有的作业,并创建作为现有代理帐户运行的作业步骤。” 而关于固定服务器角色的另一篇文章提到可以授予代理访问权限,但没有提到如何做到这一点:MSDN

4

4 回答 4

22

我找到了答案。非系统管理员用户必须有权访问明确授予其角色或用户名的代理帐户:

授予非系统管理员对代理帐户的访问权限

  1. 在对象资源管理器中,展开服务器。
  2. 展开 SQL Server 代理。
  3. 展开代理,展开代理的子系统节点,右键单击要修改的代理,然后单击属性。

在“常规”页面上,您可以更改代理帐户名称、凭据或它使用的子系统。在 Principals 页面上,您可以添加或删除登录名或角色以授予或删除对代理帐户的访问权限。

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

于 2012-08-27T13:34:31.723 回答
9
  1. 编辑作业步骤时 -切换到左侧的“高级”选项卡,不要使用主页上的下拉菜单。
  2. 确保用户被授予作业数据库中的角色,即使他是“系统管理员”

(屏幕截图适用于 SSMS 17)

在此处输入图像描述

于 2018-09-09T11:23:04.430 回答
2

不,你不应该。您刚才提到的角色的成员只能创建作为自己运行的作业,因为它们是非管理角色。如果您想使用另一个用户运行作业,则需要访问代理帐户。如果我没记错的话,唯一有权创建代理帐户的组是 sysadmin,因此您需要一个管理员来为您执行此操作。

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

于 2012-08-24T15:37:13.880 回答
0

首先创建凭据,然后您将能够在代理级别下添加它。完成此操作后,您可以从 sql 服务代理更改为凭据。

于 2021-03-10T10:27:19.750 回答