Dynamics CRM 2011 out-of-the-box permite seleccionar hasta 50.000 registros en las consultas de agregación. Es decir, si por ejemplo en nuestra organización tenemos 500.000 contactos activos  y quisiéramos graficar la cantidad de dichos registros según su estado, obtendríamos el siguiente error:

image

The maximum record limit is exceeded. Reduce the number of records

Es decir, se ha excedido el limite de registros que pueden ser totalizados para determinar las cantidades de los registros.

Para aumentar este límite, debemos ejecutar un script de PowerShell en el servidor en donde se encuentra instalado el servidor de CRM 2011. Este script se puede encotrar junto con otros dentro de la SDK de CRM 2011, bajo el directorio \sdk\samplecode\ps\setadvancedsettings.ps1. Este script nos permite modificar varios parámetros de configuración a nivel de deployment de CRM (es decir que afecta a todas las organizaciones), por lo que debermos hacerle algunos ajustes para que acualice el parámetro que nos afecta en este caso.

A continuación, el código del script tal como debe ejecutarse en el PowerShell:

param
(
    #optional params
    [string]$ConfigurationEntityName,
    [string]$SettingName,
    [object]$SettingValue,
    [Guid]$Id
)
 
$ConfigurationEntityName = "Deployment"
$SettingName = "AggregateQueryRecordLimit"
$SettingValue = 500000
 
 
$RemoveSnapInWhenDone = $False
 
if (-not (Get-PSSnapin -Name Microsoft.Crm.PowerShell -ErrorAction SilentlyContinue))
{
    Add-PSSnapin Microsoft.Crm.PowerShell
    $RemoveSnapInWhenDone = $True
}
 
$setting = New-Object "Microsoft.Xrm.Sdk.Deployment.ConfigurationEntity"
$setting.LogicalName = $ConfigurationEntityName
if($Id) { $setting.Id = $Id }
 
$setting.Attributes = New-Object "Microsoft.Xrm.Sdk.Deployment.AttributeCollection"
$keypair = New-Object "System.Collections.Generic.KeyValuePair[String, Object]" ($SettingName, $SettingValue)
$setting.Attributes.Add($keypair)
 
Set-CrmAdvancedSetting -Entity $setting
 
if($RemoveSnapInWhenDone)
{
    Remove-PSSnapin Microsoft.Crm.PowerShell
}
Los parámetros específicos para esta configuración están resaltados  en amarillo.  En este caso, se aumenta el límite de registros a 500.000 ($SettingValue = 500000). Es posible establecer dicho límite en le valor que sea necesario, solo hay que tener en cuenta que esto implica cierta degradación en la performance del servidor.

En caso de querer verificar el cambio, desde el SSMS podemos ejecutar la siguiente consulta contra la base de datos de configuración MSCRM_CONFIG:

USE MSCRM_CONFIG
GO
select ColumnName,IntColumn from DeploymentProperties where ColumnName='AggregateQueryRecordLimit'

lo que nos debería devolver lo siguiente:

image

Una vez realizada la modificación de éste parámetro, el gráfico se genera sin problemas:

image

Espero les sea de tanta utilidad como lo fue para mí. Sonrisa

Saludos.

NIcolás Brandl [twitter: @nicolasbrandl]

UruIT Dynamix | expertos en Dynamics CRM

uruit_dynamix_016