Sql server 2008 SQL Server代理作业已完成,但存储过程未完成';跑不动

Sql server 2008 SQL Server代理作业已完成,但存储过程未完成';跑不动,sql-server-2008,dynamics-crm-2011,sql-server-agent,Sql Server 2008,Dynamics Crm 2011,Sql Server Agent,我有一个存储过程,可以在CRM2011 SQL Server上简单地运行一系列UPDATE语句。目标是通过SQLServer代理作业使其每30分钟运行一次。存储过程不需要任何参数 我创建了作业并添加了一个步骤来调用T-SQL语句“EXEC mystoredprocname”。我右键单击“在此步骤开始作业”,它成功完成。但是,所有更新都没有反映在数据库中 如果我在查询行中手动运行“EXEC mystoredprocname”,它将正常执行,数据库将按预期更新 这看起来应该非常简单,所以我不确定我的

我有一个存储过程,可以在CRM2011 SQL Server上简单地运行一系列UPDATE语句。目标是通过SQLServer代理作业使其每30分钟运行一次。存储过程不需要任何参数

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

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


这看起来应该非常简单,所以我不确定我的过程中的故障在哪里。

正如您在评论中提到的,您的存储过程使用了过滤视图,我敢打赌,您不是以通过Windows身份验证并拥有正确CRM权限的用户的身份运行计划,因为正如经常提到的那样,过滤视图实现了CRM基于Windows的身份验证模型

因此,我有三个建议:

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

  • 由于您承诺直接更新表,因此您希望使用筛选视图的唯一原因是它为您打包了对
    OptionSet
    s的字符串表示形式的检索。您可以直接查询
    StringMap
    表并引用常规视图,而不需要CRM用户即可访问这些视图。您也会注意到速度的提高,因为安全检查降低了过滤视图的速度

  • 如果您不打算直接更新表,为什么不将存储过程重写为一个小应用程序,您可以安排它每30分钟更新一次?除非你有一个巨大的三角洲,这应该是首选的方法。您获得了CRM web服务中内置验证模型的优势,尽管您失去了基于集合的方法的好处,但我认为使用第三方系统的好处大于系统中潜在的黑客和破坏的坏处。如果您不是.NET开发人员(即使您是),CRM SDK有许多示例可以帮助您入门

  • 下面是一些与我上述观点相关的问题,可能会对您有所帮助


    正如您在评论中提到的,您的存储过程使用的是过滤视图,我敢打赌,您并不是以通过Windows身份验证并具有正确CRM权限的用户的身份运行计划,因为正如经常提到的,过滤视图实现CRM基于Windows的身份验证模型

    因此,我有三个建议:

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

  • 由于您承诺直接更新表,因此您希望使用筛选视图的唯一原因是它为您打包了对
    OptionSet
    s的字符串表示形式的检索。您可以直接查询
    StringMap
    表并引用常规视图,而不需要CRM用户即可访问这些视图。您也会注意到速度的提高,因为安全检查降低了过滤视图的速度

  • 如果您不打算直接更新表,为什么不将存储过程重写为一个小应用程序,您可以安排它每30分钟更新一次?除非你有一个巨大的三角洲,这应该是首选的方法。您获得了CRM web服务中内置验证模型的优势,尽管您失去了基于集合的方法的好处,但我认为使用第三方系统的好处大于系统中潜在的黑客和破坏的坏处。如果您不是.NET开发人员(即使您是),CRM SDK有许多示例可以帮助您入门

  • 下面是一些与我上述观点相关的问题,可能会对您有所帮助


    您是否在作业步骤中设置了正确的数据库?是的,我可以确认作业已设置为正确的数据库。我还尝试过使用“master”并在我的T-SQL语句中添加“USE”。闻起来像是权限问题@DavidBrabant,OP说作业完成时没有任何错误,我不认为这是权限问题。是的,我引用了自定义表单的FilteredNew_视图您是否在作业步骤上设置了正确的数据库?是的,我可以确认作业设置为正确的数据库。我还尝试过使用“master”并在我的T-SQL语句中添加“USE”。闻起来像是权限问题@DavidBrabant,OP说作业完成时没有任何错误,我不认为这是权限问题。是的,我引用了自定义表单的FilteredNew_视图。这工作非常完美。我实施了#2作为一个短期解决方案,目标是在未来将其转移到#3。谢谢大家的帮助。这非常有效。我实施了#2作为一个短期解决方案,目标是在未来将其转移到#3。谢谢大家的帮助。