Directrices y limitaciones del uso de colecciones de esquemas XML en el servidor

La validación del lenguaje de definición de esquemas XML (XSD) tiene algunas limitaciones relativas a las columnas SQL que utilizan el tipo de datos xml. En la tabla siguiente se proporcionan detalles acerca de estas limitaciones, así como directrices para modificar el esquema XSD para que funcione con SQL Server. Los temas de esta sección proporcionan información adicional sobre limitaciones específicas y orientación para trabajar con ellas.

Elemento

Limitación

minOccurs y maxOccurs

Los valores de los atributos minOccurs y maxOccurs deben caber en enteros de 4 bytes. El servidor rechazará los esquemas que no cumplan esta restricción.

<<xsd:choice>>

SQL Server rechaza los esquemas que tienen una partícula <xsd:choice> sin elementos secundarios, a menos que el valor del atributo minOccurs de la partícula sea igual a cero.

<xsd:include>

Actualmente, SQL Server no admite este elemento. El servidor rechaza los esquemas XML que incluyen este elemento.

Para solucionar este problema, los esquemas XML que incluyen la directiva <xsd:include> se pueden procesar previamente para copiar y combinar el contenido de todos los esquemas incluidos en un solo esquema para cargarlo en el servidor. Para obtener más información, vea Herramienta de preprocesador para esquemas XML.

<xsd:key>, <xsd:keyref> y <xsd:unique>

Actualmente, SQL Server no admite estas restricciones basadas en XSD para exigir la unicidad o establecer claves y referencias de claves. Los esquemas XML que contienen estos elementos no se pueden registrar.

<xsd:redefine>

SQL Server no admite este elemento. Para obtener información sobre otra manera de actualizar los esquemas, vea Elemento <xsd:redefine>.

Valores <xsd:simpleType>

SQL Server sólo admite una precisión de milisegundos para los tipos simples que tienen componentes de segundos distintos de xs:time y xs:dateTime, y una precisión de 100 nanosegundos para xs:time y xs:dateTime. SQL Server aplica limitaciones a todas las enumeraciones de tipo simple XSD reconocidas.

SQL Server no admite la utilización del valor "NaN" en declaraciones <xsd:simpleType>.

Para obtener más información, vea Valores de las declaraciones de <xsd:simpleType>.

xsi:schemaLocation y xsi:noNamespaceSchemaLocation

SQL Server no tiene en cuenta estos atributos si están presentes en los datos de instancias XML insertados en una columna o variable del tipo de datos xml.

xs:QName

SQL Server no admite los tipos derivados de xs:QName que utilizan un elemento de restricción de esquema XML.

SQL Server no admite tipos de unión con xs:QName como elemento del miembro.

Para obtener más información, vea Tipo xs:QName.

Agregar miembros a un grupo de sustitución existente

No puede agregar miembros a un grupo de sustitución existente en una colección de esquemas XML. Un grupo de sustitución de un esquema XML está restringido en el sentido de que el elemento de encabezado y todos sus elementos miembros se deben definir en la misma instrucción {CREATE | ALTER} XML SCHEMA COLLECTION.

Formas canónicas y restricciones de patrón

La representación canónica de un valor no puede infringir la restricción de patrón de su tipo. Para obtener más información, vea Formas canónicas y restricciones de patrón.

Facetas de enumeración

SQL Server no admite los esquemas XML con tipos que tienen facetas de patrón o enumeraciones que infringen estas facetas.

Longitud de faceta

Las facetas length, minLength y maxLength se almacenan como tipo long. Este tipo es de 32 bits. Por tanto, el intervalo de valores aceptables para estos valores es 2^31.

Atributo de Id.

Cada componente de esquema XML puede incluir un atributo de Id. SQL Server exige la unicidad de las declaraciones <xsd:attribute> de tipo ID, pero no almacena estos valores. El ámbito de aplicación de la unicidad es la instrucción {CREATE | ALTER} XML SCHEMA COLLECTION.

Tipo de Id.

SQL Server no admite elementos de tipo xs:ID, xs:IDREF ni xs:IDREFS. Un esquema no puede declarar elementos de este tipo, ni elementos derivados de este tipo por restricción o extensión.

Espacio de nombres local

El espacio de nombres local se debe especificar de forma explícita para el elemento <xsd:any>. SQL Server rechaza los esquemas que utilizan una cadena vacía ("") como valor para el atributo de espacio de nombres. En su lugar, SQL Server requiere la utilización explícita de "##local" para indicar un elemento o atributo no calificado como instancia del carácter comodín.

Contenido simple y de tipo mixto

SQL Server no admite la restricción de un tipo mixto a un contenido simple. Para obtener más información, vea Tipo mixto y contenido simple.

Tipo NOTATION

SQL Server no admite el tipo NOTATION.

Condiciones de memoria insuficiente

Cuando se trabaja con colecciones de esquemas XML de gran tamaño, puede que se produzca una condición de memoria insuficiente. Para conocer las soluciones a este problema, vea Las condiciones de memoria insuficiente y las grandes colecciones de esquemas XML..

Valores repetidos

SQL Server rechaza los esquemas en los que el atributo de bloqueo o final tiene valores repetidos como "restriction restriction" y "extension extension".

Identificadores de componentes de esquema

SQL Server limita los identificadores de los componentes de esquema a una longitud máxima de 1.000 caracteres Unicode. Tampoco se admiten los pares de caracteres complementarios en identificadores.

Información de zona horaria

En SQL Server 2008, la información de la zona horaria es totalmente compatible con los valores xs:date, xs:time y xs:dateTime para validación de esquemas XML. Con el modo de compatibilidad con versiones anteriores de SQL Server 2005, la información de la zona horaria siempre se normaliza a la hora universal coordinada (hora del meridiano de Greenwich). En el caso de los elementos de tipo dateTime, el servidor convierte la hora especificada a la hora GMT mediante el valor de desplazamiento ("-05:00") y devuelve la hora GMT correspondiente.

Tipos de unión

SQL Server no admite las restricciones de tipos de unión.

Decimales de precisión variable

SQL Server no admite los decimales de precisión variable. El tipo xs:decimal representa los números decimales de precisión arbitraria. Los procesadores XML de conformidad mínima deben admitir números decimales con un mínimo de totalDigits=18. SQL Server admite totalDigits=38, pero limita los dígitos decimales a 10. El servidor representa internamente todos los valores con instancias xs:decimal mediante el tipo numeric (38, 10) de SQL.

En esta sección

Tema

Descripción

Formas canónicas y restricciones de patrón

Explica las formas canónicas y las restricciones de patrón.

Componentes comodín y validación del contenido

Describe las limitaciones de utilizar caracteres comodín, validación lax y elementos de tipo anyType con colecciones de esquemas XML.

Elemento <xsd:redefine>

Explica la limitación de utilizar el elemento <xsd:redefine> y describe una solución alternativa.

Tipo xs:QName

Describe la limitación relacionada con el tipo xs:QName.

Valores de las declaraciones de <xsd:simpleType>

Describe las restricciones que se aplican a las declaraciones del tipo <xsd:simpleType>.

Facetas de enumeración

Describe la limitación relacionada con las facetas de enumeración.

Tipo mixto y contenido simple

Describe la limitación que se produce al restringir un tipo mixto a un contenido simple.

Las condiciones de memoria insuficiente y las grandes colecciones de esquemas XML.

Proporciona soluciones para la condición de falta de memoria que se produce en ocasiones con colecciones de esquemas de gran tamaño.

Finalización de los modelos de contenido no determinista

Describe las limitaciones relacionadas con los modelos de contenido no deterministas.