换句话说,我是否应该始终将 SQL 作业的作业所有者设置为 sa,即使它默认为创建它的用户?
3 回答
如果该用户被禁用或删除,则该用户拥有的任何作业都将停止运行。如果运行时出现 Active Directory 问题,作业也可能不会运行。Brent Ozar 在他的网站上有一篇关于此的文章: http ://www.brentozar.com/blitz/jobs-owned-by-user-accounts/
你得忍受我。因为我是凭记忆去的。
查看一些旧脚本,我有这段代码。
选择 @jobOwnerNameVeryImportantToSetCorrectly = 'someSqlAuthenticatonUser'
现在。在我的场景中,我允许非“sa”用户安排和运行作业。这就是为什么我让所有者成为非“sa”用户的原因。
我想回答的问题是,“谁负责工作”。如果它总是“sa”,那么它不是问题。
但是,如果您想要一个非 'sa' 帐户来运行它,那么一个特权较低的帐户将如何运行由 super-mack-daddy 帐户拥有的作业?
我的测试是。
- 创建工作。让'sa'拥有它。
- 创建一个临时 sql 身份验证帐户。
- 以此 sql-authentication 帐户登录数据库。
- 看看您是否可以运行该作业。
我的记忆是说“较小的帐户将无法”。但是,我处理的是 Sql Server 2005 上的工作。因此,即使我没记错 2005 年,2008 年或 2008R2 也可能不一样。
但我记得有这个问题。因此我的变量声明:
选择 @jobOwnerNameVeryImportantToSetCorrectly = 'someSqlAuthenticatonUser'
我也阅读了 Brent Ozar 的文章,并且处于类似的情况,即启用了很多不属于 SA 的工作。根据我的研究,我没有找到任何令人信服的理由不将所有权更改为“SA”,但上面提到了两个很好的理由为什么你应该这样做。
您不必担心他们无法摆脱这种变化。我要谨慎的唯一两件事是:1)您作为 SA运行的作业和 2)如果您进入一个环境,启用在您进行此更改后已禁用的作业。
为什么有人会做这两件事,IDK,但您始终可以备份 msdb,然后在开发或培训服务器中测试这些更改。只需注意您更改的工作,以防发生意外情况。