2017-02-21 185 views
1

我在我们的SQL Server 2012上设置为管理员,并创建了一个运行过程的作业,该过程从2个连接的表中选择记录。这一切都工作正常,当我登录到SSMS并手动启动作业。问题是,当我尝试安排作业运行时(即使我仍然登录到SSMS),同一作业不会从第二个表中返回记录,这就像连接不起作用。SQL Server代理权限与用户权限

我检查了SQL代理正在使用主要的SQL Server服务帐户,我认为它对所有内容都有权限。

任何关于故障排除的想法将不胜感激。

+0

工作历史中的任何提示? – artm

+0

@artm,没有错误消息,因为作业运行良好 - 数据不完整。如果我从SSMS手动启动作业,我会从两个表中获取数据,如果安排它忽略连接并仅返回一半数据。 –

回答

2

在sql作业的Steps页面上,您可以将其告知“Run As”特定用户。

否则,SQL Server代理下运行将有帐户有权限的所有数据库/表等

你应该能够看到发生了什么,当工作通过查看按计划运行工作经历。您可以通过右键单击作业列表中的作业或右键单击作业监视器中的作业并选择“查看历史记录”来执行此操作。

希望这会有所帮助。

+0

当我手动运行没有RunAs的程序 - 没有问题。当我手动运行没有RunAs的作业(运行相同的程序) - 没有问题。当我安排没有RunAs设置的作业时,它只给我一半的数据而没有错误。 (我们使用传递身份验证),当我尝试将我的凭据放入RunAs框时 - 它甚至无法手动运行并出现错误:服务器用户'%。* ls'不是数据库'%'中的有效用户。 * ls'的。这安全令我困惑。 –

+0

数据库最近是否从另一台服务器移出?请参阅此文章: https://support.microsoft.com/en-us/help/240872/how-to-resolve-permission-issues-when-you-move-a-database-between-servers-that -are-running-sql-server – OnoMrBill

+0

除了我之前提到的文章中的信息之外,您或其他管理员应该检查您计划用于定期运行作业的服务器登录名和数据库用户。 快速问题:在同一个数据库中是2个连接的表吗? 我们通常会使用我们所谓的“服务账户”。通常是一个对数据库具有db_owner权限的SQL登录。 您可以将其中一个设置为测试,以验证它是否有效,然后稍后再调整安全设置。 – OnoMrBill

0

是一个腐败的工作。我删除了这个工作并重新创建了一个新工作,并且按预期工作。