【问题标题】:SQL Server agent job account issueSQL Server 代理作业帐户问题
【发布时间】:2009-08-01 11:15:03
【问题描述】:

我使用的是 SQL Server 2008。我对 SQL Server 代理作业运行时将使用哪个帐户感到困惑。我的困惑是,

  1. SQL Server 代理作为 Windows 服务,我们可以从 Windows 服务管理控制台进行控制,从那里我们可以设置帐户以运行 SQL Server 代理(我的计算机中的 LocalSystem);
  2. 我可以设置 SQL Server 代理作业级别帐户来运行吗?
  3. 能否在每个步骤中设置 SQL Server 代理作业步骤将在哪个帐户上运行?

我有上述困惑,因为可能会使用 3 个不同的帐户系统,我关心的是每个步骤将运行的实际帐户是什么,我想避免任何权限问题(即我想确保该帐户有足够的权限.)。任何cmets或建议?感谢任何人都可以澄清3个级别的帐户,这让我很困惑。

提前致谢, 乔治

【问题讨论】:

    标签: sql sql-server sql-server-2008 sql-server-agent


    【解决方案1】:

    我通常会在您的应用访问数据库时使用同一帐户运行 SQL Server 代理作业。

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

    您可能会在不同的帐户下运行每个步骤,但我一般不会使用它(这只会让人很难知道和理解在哪个帐户下运行的内容)。仅当您必须运行需要大量额外权限且这些权限仅适用于特定系统帐户或其他东西的特别敏感步骤时才使用它。

    运行 SQL Server 代理 windows 服务的帐户实际上不会影响您的作业步骤将在什么下运行。

    所以归结为实际上只有两个帐户:

    • 需要一个帐户来运行 SQL Server 代理 Windows 服务 - 这是您的机器/服务器上的 Windows 帐户,它需要有足够的权限来运行、启动和停止服务 - 使用 LocalSystem、Network服务,或您必须使用的任何其他 Windows 帐户来运行服务

    • 另一个帐户是运行 SQL Server 代理步骤的帐户 - 通常是 SQL Server 帐户(可能基于 Windows 帐户),并且它需要在 SQL Server 中具有足够的权限才能执行其操作工作,例如它需要访问数据库对象和所有对象。我会努力为每个运行 SQL Server 作业的应用程序只一个帐户 - 让生活变得更轻松!

    马克

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

    【讨论】:

    • 谢谢 Marc,在 SQL Server 代理作业配置中我们可以分配所有者,这只是为了在转储事件日志时进行描述,或者它是 SQL Server 代理作业将运行的实际帐户?
    • 嗨,Marc,我喜欢您关于使用单一帐户的建议。那么我是否需要配置 SQL Server 代理 Windows 服务帐户?还是在其他地方配置?我认为我们最好不要设置 Windows Service 帐户,因为一旦设置,属于当前实例的所有作业都将在同一个帐户下运行。
    • George2:SQL Server 中的所有者通常是可以设置对象权限的帐户,例如给予或剥夺权利等。如果您没有专门指定另一个帐户,我不确定所有者是否会用作运行该步骤的帐户。
    • 谢谢 Marc,我的最后一个困惑点是,我想按照您的观点使用单个帐户来执行特定的 SQL Server 作业(以及该作业的所有作业步骤),如果可以的话,我将不胜感激检查我的操作是否正确,我的步骤是 - 我应该为 SQL Server 作业设置所有者,无需为每个作业步骤使用高级设置(然后每个作业步骤将自动使用所有者帐户进行包含作业),并且也不需要设置 SQL Server 代理 Windows 服务运行的帐户? Job 的 Owner 是实际运行所有步骤的帐户?
    • 我不能肯定地说 - 我似乎无法找到任何明确的答案,真的。由于我的工作通常会选择和更新数据库中的内容,因此我假设默认情况下将使用“所有者”帐户,除非您在给定步骤中指定其他帐户,是的
    【解决方案2】:

    您可以在 SQL Server 中创建凭据(使用 Mgt Studio,在安全性下)。然后在 SQL 代理中创建一个代理来使用这些凭据,告诉它代理可以使用什么样的作业步骤。然后您可以选择在作业步骤本身中使用该代理。

    所以...我为各种 SSIS 包创建帐户以在其下运行,这样我就可以保持 SQL 代理服务帐户的低权限,并使用具有稍高权限的代理凭据(虽然不是管理员,只是足够的连接权限到其他系统,包括文件系统)。

    罗伯

    【讨论】:

    • 谢谢 Rob - 我遇到了麻烦,这对我来说似乎很有效。我正在运行一些 powershell 脚本,并且需要提升某些步骤的权限。不错。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多