Dynamics CRM组织服务查询报错Generic SQL error.

错误信息

Generic SQL error.
Server stack trace: 
   在 System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
   在 System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   在 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]: 
   在 Microsoft.Xrm.Tooling.Connector.CrmServiceClient.RetrieveMultiple(QueryBase query)

如果增删改正常,在查询的时候报这个错误,那很可能是由于组织服务最终转化的SQL查询时间超时。
例如

QueryExpression gQuery = new QueryExpression("new_log")
{
    Distinct = false,
    NoLock = true,
    ColumnSet = new ColumnSet(new string[] { "new_content" }),
    Criteria = new FilterExpression()
};
Query.Criteria.AddCondition("new_content", ConditionOperator.Contains, key);
Query.Criteria.AddCondition("statecode", ConditionOperator.Equal, 0);
EntityCollection entityCollection = service.RetrieveMultiple(Query);

上面这个组织服务的查询中,使用了Contains,也就是SQL中的LIKE “%%”。这种查询非常消耗时间,当数据量太大了,就容易超时,报这个错误。

解决办法

1、优化查询

//Query.Criteria.AddCondition("new_content", ConditionOperator.Contains, key);

当注释这行代码的时候,就能正常执行,查询出来结果。

2、修改超时时间限制

在CRM 服务器注册表里 添加如下键
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM\OLEDBTimeout   600
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值