SQL Server代理作业帐户问题

4
我正在使用 SQL Server 2008,对于 SQL Server Agent Job 运行时使用的账户感到困惑。我的疑问有:
  1. SQL Server Agent 是一个 Windows 服务,我们可以从 Windows 服务管理控制台中控制它,通过设置运行 SQL Server Agent 的账户(在我的电脑上是 LocalSystem);
  2. 能否设置 SQL Server Agent Job 级别的账户来运行?
  3. 能否在每个步骤中设置 SQL Server Agent Job 步骤将要运行的账户?
我有以上的疑问,因为可能会使用 3 种不同的账户系统,我关心的是每个步骤实际运行的账户是什么,并且我想避免任何权限问题(即,我想确保该账户具有足够的权限)。是否有任何意见或建议?希望有人能澄清这 3 个层次的账户,这让我很困惑。
谢谢您的帮助, George
2个回答

5

通常情况下,我会在与应用程序访问数据库相同的帐户下运行SQL Server代理作业。

如果该帐户的权限太有限(这可能是一件好事!),我将为该应用程序和所有SQL作业创建一个单一帐户(如果可能的话),并在该帐户下运行所有SQL作业。

您可能会在不同的帐户下运行每个步骤,但一般情况下我不会使用它(这只会使了解每个帐户下运行的内容变得非常困难)。只有在必须运行需要大量额外权限且这些权限仅适用于特定系统帐户或其他情况的特别敏感步骤时才使用它。

SQL Server代理窗口服务运行的帐户对作业步骤将要运行的内容并没有影响。

所以归结起来,实际上只需要两个帐户:

  • 运行 SQL Server Agent Windows 服务所需的是一个账户 - 这是您机器/服务器上的一个Windows账户,需要有足够的权限来运行服务、启动和停止它 - 可以使用 LocalSystem、Network Service 或者任何其他的Windows账户来运行服务。

  • 另一个账户将用于在 SQL Server Agent 步骤下运行 - 这通常是一个SQL Server账户(可以基于Windows账户),并且需要在SQL Server中拥有足够的特权来完成其工作,例如,它需要访问数据库对象和所有内容。我建议每个运行 SQL Server 任务的应用程序都只使用一个账户 - 这样会让生活变得更加轻松!

Marc

PS:要设置步骤运行的用户,您需要在“高级”页面上使用作业步骤属性对话框,并从弹出窗口中选择用户:

alt text


谢谢Marc。在SQL Server代理作业配置中,我们可以指定所有者,这只是用于转储事件日志的描述目的,还是SQL Server代理作业将要运行的实际帐户? - George2
1
George2:在SQL Server中,所有者通常是可以设置对象权限的帐户,例如授予或收回权限等。如果您没有明确指定其他帐户,则我不确定所有者是否会用作运行步骤的帐户。 - marc_s
我只需要确保Owner账户在所有步骤中拥有足够的权限吗? - George2
1
我不能确定 - 我似乎找不到任何明确的答案。由于我的工作通常在数据库中选择和更新内容,所以我认为“Owner”账户将默认使用,除非您在给定步骤上指定其他账户。 - marc_s
谢谢Marc,我已将您的答复标记为已答复。这里有一个相关的问题,如果您能帮忙解答,我将不胜感激。https://dev59.com/DUjSa4cB1Zd3GeqPHrRA - George2
显示剩余3条评论

4
您可以在SQL Server中创建凭据(使用Mgt Studio,在安全性下)。然后在SQL Agent中创建代理以使用这些凭据,告诉它可以由代理使用哪种作业步骤。然后您可以选择在作业步骤本身中使用该代理。
因此...我为各种SSIS包创建帐户,以便我可以保持SQL Agent服务帐户的低权限,并使用具有稍高权限的代理凭据(不是管理员,只有足够的权限来连接到其他系统,包括文件系统)。
罗布

谢谢Rob - 我遇到了一些问题,但这似乎完美地解决了我的问题。我正在运行一些PowerShell脚本,并需要某些步骤的提升权限。不错。 - aSkywalker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接