【问题标题】:Microsoft CRM SQL Connection ErrorMicrosoft CRM SQL 连接错误
【发布时间】:2016-03-21 05:38:22
【问题描述】:

当我尝试保存新实体时,出现以下错误:

System.Data.SqlClient.SqlException:Microsoft Dynamics CRM 遇到错误。带有错误代码 - -2147220970。

如何解决此错误?

谢谢

【问题讨论】:

  • 请分享更多细节:部署(OnPremise/Online)、产品版本、自定义部分(例如插件、同步工作流)。 SQLExceptions 的常见来源是导致死锁的插件、完整的事务日志 a.o.
  • OnPremise,2015 年。有 5 个插件程序集。我对 CRM 很陌生,所以不确定什么是同步工作流。我认为我们的解决方案是一个相当基本的解决方案。
  • 在您的 CRM 应用服务器上打开跟踪。日志显示在 Dynamics CRM 的程序文件文件夹中。你会在那里找到更多细节。检查 SQL Server 日志也​​很有用。

标签: sql-server dynamics-crm dynamics-crm-2015


【解决方案1】:

在 SDK\SampleCode\CS\HelperCode\ 目录中查看 CRM 2015 SDK 中的 errorcodes.cs 时,此错误对应于“public const int UnExpected = unchecked((int)0x80040216); // -2147220970”。话虽如此,正如在几个 cmets 中提到的,这很可能对应于 Microsoft SQL 超时和/或 SQL 死锁。您还应该查看 Microsoft CRM 服务器应用程序事件日志。 MSCRMPlatform 源的事件 ID 17972 对应于耗时超过 10 秒的 CRM 查询,并将包括查询的全文。请注意,如果在创建新实体期间存在 SQL 死锁或长时间运行的 SQL 阻塞,则显示为长时间运行的查询可能不一定是昂贵的 SQL 查询,而只是碰巧陷入了阻止的阻塞后面他们不会被迅速处决。

在不了解您的 SQL Server 环境和自定义的完整详细信息的情况下,我会增加 Microsoft Dynamics CRM 用于这些平台生成的查询的超时时间。 CRM 生成的 SQL 查询的默认设置是 30 秒超时(如果您没有更改)。

我会通过在 Microsoft CRM 服务器上运行 RegEdit 并在下面添加注册表项(作为 REG_DWORD KEY)将超时值增加到十进制 600。请注意,如果增加更多,它可以完成,因为它表示超时值(以秒为单位),但我通常不建议将其设置为最多高于 600 十进制,除非您正在执行诸如导入 Microsoft CRM 组织或从旧版本更新。如果 Microsoft CRM 查询的执行时间比执行时间长,那么您需要识别和调整这些查询和/或调整 Microsoft SQL Server 的性能。对于这个答案,它会占用比我更多的空间,但是如果您想要一个好的工具和参考来进行 SQL Server 数据收集和调整,我将从 SQLNexus 工具和 PSS Perf Wait Stats 数据收集脚本开始,您可以阅读并从此链接下载:http://sqlnexus.codeplex.com/

HKLM\Software\Microsoft\MSCRM\OLEDbTimeout

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多