SQL Server代理作业完成但存储过程不运行

时间:2012-12-19 15:08:10

标签: sql-server-2008 dynamics-crm-2011 sql-server-agent

我有一个存储过程,只需在CRM2011 SQL Server上运行一系列UPDATE语句。目标是通过SQL Server代理作业每30分钟运行一次。存储过程不期望任何参数。

我创建作业并添加一个步骤来调用T-SQL语句“EXEC mystoredprocname”。我右键单击并“在此步骤启动作业”并成功完成。但是,没有任何更新反映在数据库中。

如果我在查询行中手动运行“EXEC mystoredprocname”,它会正常运行并且数据库会按预期更新。

这似乎应该非常简单,所以我不确定我的流程在哪里崩溃。

1 个答案:

答案 0 :(得分:1)

正如您在评论中提到的,您的存储过程使用过滤后的视图,我非常愿意下注您运行日程安排作为通过Windows身份验证进行身份验证的用户正确的CRM权限,因为如前所述,过滤后的视图实现了CRM的基于Windows的身份验证模型。

所以我有三个建议:

  1. 仔细检查以确保计划在具有正确读取权限的CRM用户的Windows帐户下运行。

  2. 由于您承诺直接更新表,因此您希望使用筛选视图的唯一原因是它为您打包检索OptionSet的字符串表示形式。您可以直接查询StringMap表并引用常规视图,您无需成为CRM用户即可访问。您还会注意到速度的提高,因为过滤后的视图会因安全检查而变慢。

  3. 如果您承诺直接更新表格,为什么不将您的存储过程重写为可以安排每隔30分钟更新一次的小型应用程序?除非你有一个巨大的三角洲,这应该是首选的方法。您可以在CRM Web服务中获得内置验证模型的优势,虽然您失去了基于集合的方法的优势,但我认为使用第三方系统工作的优势超过了系统中潜在的黑客攻击和中断的缺点。如果您不是.NET开发人员(即使您是),CRM SDK也有许多可以帮助您入门的示例。

  4. 以下是与上述观点相关的其他一些问题,可能会对您有所帮助。