Pregunta

0x80040237 No se puede insertar clave duplicada.

Estoy intentando escribir una rutina de importación de MSCRM4.0 a través de la CrmService. Esto ha tenido éxito hasta este punto. Inicialmente sólo estaba dejando CRM generar las claves primarias de los registros. Pero mi cliente quería la capacidad para establecer la clave de un nuestra entidad personalizada a los valores predefinidos. Potencialmente esto nos permite conocer qué datos ha sido creado por nuestro instalador, y qué datos se creó después de la instalación.

I probados para asegurar que los GUID se puede ajustar al llamar al método CrmService.Update () y los resultados indicaron que los registros han sido creados con nuestros valores deseados. Me pasé la importación y todo parecía exitosa. Al modificar mi código de validación de los archivos de importación, he borrado los datos (a través de la interfaz del navegador CRM) y trató de volver a importar. Por desgracia ahora se lanza y un error de clave duplicada.

¿Por qué se está lanzando este error? ¿La interfaz de Crm borrar el registro, o ¿todavía existe, pero oculto a los ojos del usuario? ¿Hay una manera de asegurar que un registro eliminado se eliminará de forma permanente y la Guid se libera? En un entorno real, estos GUID nunca hubieran existido, pero durante mi desarrollo que necesitan estas importaciones para tener éxito.

Por cierto, teniendo en cuenta que estoy teniendo este problema, ¿Esto implica que los GUID configurar de forma estática no es una práctica recomendada?

¿Fue útil?

Solución

Por lo que puedo decir son entidades eliminado temporalmente por lo que no sería posible volver a utilizar esa Guid a menos que (o el servicio de eliminación) borró la entidad de la base de datos.

Por ejemplo, en la tabla LeadBase se encuentra un campo llamado DeletionStateCode, un valor de 0 implica que el registro no se ha eliminado.

Un valor de 2 marca el registro para su eliminación. Hay un servicio de eliminación que se ejecuta cada 2 (?) Horas para eliminar físicamente los registros de la tabla.

Otros consejos

Creo que Zahir es correcto, vuelva a ejecutar el servicio de eliminación y vuelve a intentarlo. Hay un poco de información aquí: http://blogs.msdn.com/crm/archive/2006/10/24/purging-old-instances-of-workflow-in-microsoft-crm.aspx

Zahir es correcta.

Después de importar y borrar los registros, puede poner en marcha el servicio de eliminación a la vez que elija con esta herramienta . Eso hará que sea más fácil para poner a prueba las importaciones y reexportaciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top