Diretrizes e limitações dos diagramas de atualização XML (SQLXML 4.0)
Aplica-se a: SQL Server Banco de Dados SQL do Azure
Lembre-se das recomendações a seguir ao usar diagramas de atualização XML:
Se você estiver usando um updategram para uma operação de inserção com apenas um único par de <blocos antes> e <depois>, o< bloco antes> poderá ser omitido. Por outro lado, no caso de uma operação de exclusão, o <bloco after> pode ser omitido.
Se você estiver usando um updategram com vários blocos antes> e <depois> na <tag de sincronização>, os <blocos antes> e <depois> devem ser especificados para formar <pares antes> e< depois.><
As atualizações em um diagrama de atualização são aplicadas à exibição XML fornecida pelo esquema XML. Portanto, para o mapeamento padrão obter êxito em qualquer uma das situações, você precisará especificar o nome do arquivo de esquema no diagrama de atualização ou, se o nome do arquivo não for fornecido, os nomes de elemento e atributo precisarão corresponder aos nomes de tabela e coluna no banco de dados.
O SQLXML 4.0 exige que todos os valores de coluna de um diagrama de atualização sejam mapeados explicitamente no esquema (XDR ou XSD) fornecido para compor a exibição XML de seus elementos filho. Esse comportamento difere das versões anteriores do SQLXML, que permitiam um valor para uma coluna não mapeada no esquema se ele estivesse implícito como parte da chave estrangeira em uma anotação sql:relationship . (Observe que essa alteração não influencia na propagação dos valores de chave primária para os elementos filho, que ainda ocorrerá para o SQLXML 4.0 se nenhum valor for especificado explicitamente para o elemento filho.
Se você estiver usando um updategram para modificar dados em uma coluna binária (como o tipo de dados de imagem do SQL Server), deverá fornecer um esquema de mapeamento no qual o tipo de dados do SQL Server (por exemplo, sql:datatype="image") e o tipo de dados XML (por exemplo, dt:type="binhex" ou dt:type="binbase64) devem ser especificados. Os dados da coluna binária devem ser especificados no updategram; A anotação sql:url-encode especificada no esquema de mapeamento é ignorada pelo UpdateGram.
Quando você estiver escrevendo um esquema XSD, se o valor especificado para a anotação sql:relation ou sql:field incluir um caractere especial, como um caractere de espaço (por exemplo, no nome da tabela "Detalhes do Pedido"), esse valor deverá ser colocado entre colchetes (por exemplo, "[Detalhes do Pedido]").
Ao usar diagramas de atualização, não são suportadas relações de cadeia. Por exemplo, se as tabelas A e C tiverem uma relação de cadeia que use a tabela B, ocorrerá o erro a seguir ao tentar executar o diagrama de atualização:
There is an inconsistency in the schema provided.
Mesmo se o esquema e o diagrama de atualização estiverem corretos e devidamente formados, esse erro ocorrerá se houver uma relação de cadeia.
Os Updategrams não permitem a passagem de dados de tipo de imagem como parâmetros durante as atualizações.
Tipos binários de objetos grandes (BLOB), como text/ntext e images, não devem ser usados no <bloco anterior> ao trabalhar com updategrams, pois isso os incluirá para uso no controle de simultaneidade. Isso pode causar problemas com o SQL Server devido às limitações na comparação de tipos de BLOB. Por exemplo, a palavra-chave LIKE é usada na cláusula WHERE para comparar entre colunas do tipo de dados text ; no entanto, as comparações falharão no caso de tipos BLOB em que o tamanho dos dados é maior que 8K.
Caracteres especiais em dados ntext podem causar problemas com o SQLXML 4.0 devido às limitações de comparação para tipos de BLOB. Por exemplo, o <uso de "[Serializable]" no bloco anterior> de um updategrams quando usado na verificação de simultaneidade de uma coluna do tipo ntext falhará com a seguinte descrição de erro SQLOLEDB:
Empty update, no updatable rows found Transaction aborted
Confira também
Considerações sobre segurança para diagramas de atualização (SQLXML 4.0)