Share via


Diretrizes e limitações dos diagramas de atualização XML (SQLXML 4.0)

Lembre-se das recomendações a seguir ao usar diagramas de atualização XML:

  • Se você estiver usando um diagrama de atualização para uma operação de inserção com somente um par de blocos <before> e <after>, o bloco <before> poderá ser omitido. Em contrapartida, no caso de uma operação de exclusão, o bloco <after> poderá ser omitido.

  • Se você estiver usando um diagrama de atualização com vários blocos <before> e <after> na marca <sync>, tanto os blocos <before> quanto os blocos <after> precisarão ser especificados para formar pares <before> e <after>.

  • 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 é diferente daquele das versões anteriores do SQLXML, que permitiam um valor para uma coluna não mapeada no esquema se fosse sugerido 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 diagrama de atualização para modificar os dados em uma coluna binária (como o tipo de dados SQL Serverimage), precisará fornecer um esquema de mapeamento no qual o tipo de dados SQL Server (por exemplo, sql:datatype="image") e o tipo de dados XML (por exemplo, dt:type="binhex" ou dt:type="binbase64) precisam ser especificados. Os dados da coluna binária precisam ser especificados no diagrama de atualização; a anotação sql:url-encode especificada no esquema de mapeamento é ignorada pelo diagrama de atualização.

  • Quando você está 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 de tabela "Order Details"), esse valor precisará ser colocado entre colchetes (por exemplo, "[Order Details]").

  • 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 diagramas de atualização não permitem a passagem de dados de tipo image como parâmetros durante as atualizações.

  • Os tipos BLOB (objeto grande binário) como text/ntext e as imagens não devem ser usados no bloco <before> ao trabalhar com diagramas de atualização porque isso os incluirá para ser usados em controle simultâneo. Isso pode causar problemas com o SQL Server devido às limitações de comparação para tipos BLOB. Por exemplo, a palavra-chave LIKE é usada na cláusula WHERE para comparar entre colunas do tipo de dados text; entretanto, as comparações falharão no caso de tipos BLOB em que o tamanho dos dados seja maior do que 8KB.

  • Caracteres especiais em dados ntext podem causar problemas com o SQLXML 4.0 devido às limitações de comparação para tipos BLOB. Por exemplo, o uso de "[Serializable]" no bloco <before> de um diagrama de atualização quando usado na verificação simultânea de uma coluna de tipo ntext falhará com a descrição do erro do SQLOLEDB a seguir:

    Empty update, no updatable rows found   Transaction aborted