No me lo creía cuando lo vi, pero ahí estaba.

Este error me lo encontré en SharePoint 2010, cuando sobre un sitio de publicación, intentaba, desde el navegador (nada de SP Designer, ni código), crear un nuevo tipo de contenido, basado en un tipo de contenido padre, que también era personalizado.

Después de varias búsquedas, encontré la solución en el siguiente foro:

http://social.technet.microsoft.com/Forums/en-US/sharepointadmin/thread/afd9b718-6da9-4042-9dcb-a6fafa9fe77b/

Al parecer, en algunos casos “raros”, donde el tipo de contenido base, se ha creado desde una Feature de Visual Studio, podemos encontrarnos con este error, que se produce porque en la tabla de SQLSRV que almacena los tipo de contenido: dbo.ContentTypes, tiene una columna “NextChildByte” que es un contador usado para crear el ContentTypeId del nuevo tipo de contenido. En algunos casos, ese NextChildByte, no se incrementa, lo que provoca que al darse de alta un nuevo tipo de contenido basado en ese tipo base, el ContentTypeId generado, sea igual a otro tipo de contenido ya existente.

Para solucionarlo, hay que atacar directamente a la BD de SharePoint, lo cual es algo muy delicado, así que hay que hacerlo con mucho cuidado y los backups pertinentes.

Primero de todo, necesitamos encontrar el tipo de contenido base, que no ha incrementado el campo NextChildByte. Para ello, lanzamos la siguiente query sobre la BD de contenido de SharePoint:


Mucho ojo con que sólo os aparezca un único registro:

image

En principio, se puede lanzar esa misma query sobre el campo ResourceDir=’Nombre del tipo de contenido base’

Pero os tenéis que asegurar que sólo aparece un registro.

Sobre ese registro, hay que actualizar el campo NextChildByte, con un valor superior al que tenga (yo usé un original +1):


Para sacar fácilmente el SiteId y ContentTypeId, os recomiendo usar el SharePoint Manager:

image

Espero que os sirva.

Saludos!!!