Compatibilidad con tipos de datos xml en SQLXML 4.0

A partir de SQL Server 2005, SQL Server admite datos XML con tipo mediante el uso del tipo de datos xml. En este tema se proporciona información sobre la forma en que SQLXML 4.0 reconoce instancias del tipo de datos xml y la forma en que implementa la compatibilidad con estas instancias.

Trabajar con tipos de datos xml

Para entender mejor la forma de trabajar con tablas SQL que implementan columnas de tipo de datos xml, se proporcionan los ejemplos siguientes:

Tarea

Ejemplo

Tema

Cómo asignar e incluir una columna xml en una vista XML

"Asignar un elemento XML a una columna de tipo de datos XML"

Asignación predeterminada de elementos y atributos XSD a tablas y columnas (SQLXML 4.0)

Cómo insertar datos en una columna xml con diagramas de actualización

"Insertar datos en una columna de tipo de datos XML"

Insertar datos con diagramas de actualización XML (SQLXML 4.0)

Realizar una carga masiva de datos XML en una columna xml

"Cargar datos de forma masiva en columnas de tipo de datos xml"

Ejemplos de carga masiva XML (SQLXML 4.0)

Instrucciones y limitaciones

  • <xsd:any> no puede asignarse a una columna que incluya un tipo de datos xml. En SQLXML, se proporciona compatibilidad para este escenario a través de la anotación sql:overflow-field. Otra solución es asignar un campo de tipo de datos xml como un elemento de xsd:anyType. Esta solución alternativa se muestra en el ejemplo "Asignar un elemento XML a una columna de tipo de datos XML", al que se hacía referencia en la tabla anterior.

  • No se admiten consultas XPath en el contenido de las columnas de tipo de datos xml.

  • El uso de una columna de tipo de datos xml en anotaciones donde no se admite o no se permite (como sql:relationship y sql:key-fields) producirá errores de SQL Server que no serán capturados por los componentes de nivel intermedio que implementan SQLXML 4.0. Esto ocurre porque SQLXML no requiere información de tipos SQL. Es similar al comportamiento de SQLXML con otros tipos de datos, como los tipos BLOB y binario.

  • La asignación de columnas xml sólo se admite en esquemas XSD. Los esquemas XDR no admiten la asignación de columnas xml.

  • SQLXML 4.0 se basa en la compatibilidad con el análisis XML que proporciona SQL Server. Una columna xml puede asignarse como XML con tipo o XML sin tipo. En ambos casos, SQLXML 4.0 no valida el XML de entrada. Si el XML de entrada no es válido o no tiene un formato correcto, SQL Server se lo notifica a SQLXML y propaga cualquier información de error pertinente que el servidor devuelve al usuario.

  • SQLXML 4.0 se basa en la compatibilidad limitada con las DTD que se proporcionan en SQL Server. SQL Server permite una DTD interna en los datos de tipo xml, que puede utilizarse para proporcionar valores predeterminados y reemplazar las referencias a entidades por su contenido expandido. SQLXML pasa los datos XML "tal cual" al servidor (incluida la DTD interna). Puede convertir las DTD en documentos de esquema XML (XSD) mediante herramientas de otros fabricantes y cargar los datos con esquemas XML insertados en la base de datos.

  • SQLXML 4.0 no conserva instrucciones de procesamiento de declaraciones XML (por ejemplo, <?xml version='1.0'?>) basándose en el comportamiento de SQL Server. En lugar de ello, la declaración XML se trata como una directiva del analizador XML de SQL Server y sus atributos (version, encoding y standalone) se pierden una vez que los datos se han convertido al tipo xml. Los datos XML se almacenan internamente como UCS-2. Las demás instrucciones de procesamiento de la instancia XML se conservan; se permiten en la columna xml y son compatibles con SQLXML.

Vea también

Conceptos