Compartir por


Instrucciones y limitaciones de los diagramas de actualización XML (SQLXML 4.0)

Se aplica a: SQL ServerAzure SQL Database

Recuerde lo siguiente al utilizar los diagramas de actualización XML:

  • Si usa un diagrama de actualización para una operación de inserción con un solo par de bloques antes> y <después>, se puede omitir el< bloque before>.< Por el contrario, en el caso de una operación de eliminación, se puede omitir el bloque after>.<

  • Si usa un diagrama de actualización con varios <bloques antes> y después de la <etiqueta de sincronización>, se <deben especificar los bloques antes> y< después de los bloques para formar< antes> y <<después>>> de los pares.

  • Las actualizaciones de un diagrama de actualización se aplican a la vista XML proporcionada por el esquema XML. Por consiguiente, para que la asignación predeterminada sea correcta debe especificar el nombre de archivo del esquema del diagrama de actualización o, si no se proporciona el nombre de archivo, los nombres de atributo y elemento deben coincidir con los nombres de columna y tabla de la base de datos.

  • SQLXML 4.0 requiere que todos los valores de columna de un diagrama de actualización estén asignados explícitamente en el esquema (XDR o XSD) proporcionado para componer la vista XML de sus elementos secundarios. Este comportamiento difiere de las versiones anteriores de SQLXML, que permitían un valor para una columna no asignada en el esquema si estaba implícita como parte de la clave externa en una anotación sql:relationship . (Observe que este cambio no afecta a la propagación de los valores de clave principal a los elementos secundarios, que todavía se produce para SQLXML 4.0 si no se especifica ningún valor explícitamente para el elemento secundario).

  • Si usa un diagrama de actualización para modificar datos en una columna binaria (como el tipo de datos de imagen de SQL Server), debe proporcionar un esquema de asignación en el que se debe especificar el tipo de datos de SQL Server (por ejemplo, sql:datatype="image") y el tipo de datos XML (por ejemplo, dt:type="binhex" o dt:type="binbase64). Los datos de la columna binaria deben especificarse en el diagrama de actualización; El diagrama de actualización omite la anotación sql:url-encode que se especifica en el esquema de asignación.

  • Al escribir un esquema XSD, si el valor especificado para la anotación sql:relation o sql:field incluye un carácter especial, como un carácter de espacio (por ejemplo, en el nombre de la tabla "Detalles del pedido"), este valor debe incluirse entre corchetes (por ejemplo, "[Detalles del pedido]").

  • Al utilizar los diagramas de actualización, no se admiten las relaciones de cadena. Por ejemplo, si las tablas A y C están relacionadas mediante una relación de cadena que utiliza la tabla B, se producirá el error siguiente al intentar ejecutar el diagrama de actualización:

    There is an inconsistency in the schema provided.  
    

    Aun cuando el esquema y el diagrama de actualización sean correctos y tengan un formato válido, se producirá este error si está presente una relación de cadena.

  • Los diagramas de actualización no permiten el paso de datos de tipo de imagen como parámetros durante las actualizaciones.

  • Los tipos de objetos binarios grandes (BLOB), como text/ntext e images, no deben usarse en el <bloque anterior> en cuando trabajen con diagramas de actualización, ya que esto los incluirá para su uso en el control de simultaneidad. Esto puede causar problemas con SQL Server debido a las limitaciones en la comparación de tipos BLOB. Por ejemplo, la palabra clave LIKE se usa en la cláusula WHERE para comparar entre columnas del tipo de datos de texto ; sin embargo, las comparaciones producirán un error en el caso de los tipos BLOB en los que el tamaño de los datos sea mayor que 8 000.

  • Los caracteres especiales de los datos ntext pueden causar problemas con SQLXML 4.0 debido a las limitaciones en la comparación de tipos BLOB. Por ejemplo, el uso de "[Serializable]" en el <bloque anterior> de un diagrama de actualización cuando se usa en la comprobación de simultaneidad de una columna de tipo ntext producirá un error con la siguiente descripción de error de SQLOLEDB:

    Empty update, no updatable rows found   Transaction aborted  
    

Consulte también

Consideraciones de seguridad sobre los diagramas de actualización (SQLXML 4.0)