Partilhar via


Diretrizes e Limitações dos Updategrams XML (SQLXML 4.0)

Aplica-se a:SQL ServerBanco de Dados SQL do Azure

Lembre-se do seguinte ao usar updategrams XML:

  • Se estiver a usar um updategram para uma operação de inserção com apenas um par de <blocos antes> e <depois> , o <bloco antes> pode ser omitido. Por outro lado, no caso de uma operação de eliminação, o <bloco posterior> pode ser omitido.

  • Se estiver a usar um updategram com múltiplos <blocos antes> e <depois> na <tag de sincronização> , tanto <os blocos antes> como <os blocos depois> devem ser especificados para formar <pares antes> e <depois> .

  • As atualizações num updategram são aplicadas à vista XML fornecida pelo esquema XML. Portanto, para que o mapeamento padrão tenha sucesso, deve especificar o nome do ficheiro de esquema no updategram ou, se o nome do ficheiro não for fornecido, os nomes dos elementos e atributos devem corresponder aos nomes das tabelas e colunas na base de dados.

  • O SQLXML 4.0 exige que todos os valores de coluna num updategram sejam explicitamente mapeados no esquema (seja XDR ou XSD) fornecido para compor a vista XML dos seus elementos filhos. Este comportamento difere das versões anteriores do SQLXML, que permitiam um valor para uma coluna não mapeada no esquema se fosse implícito como parte da Chave estrangeira numa anotação sql:relationship . (Note que esta alteração não afeta a propagação dos valores primários da chave para elementos filhos, o que ainda ocorre para SQLXML 4.0 se nenhum valor for explicitamente especificado para o elemento filho.

  • Se estiver a usar um updategram para modificar dados numa coluna binária (como o tipo de imagem SQL Server), deve fornecer um esquema de mapeamento no qual o tipo de dado 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 para a coluna binária devem ser especificados no updategram; A anotação SQL:URL-encode especificada no esquema de mapeamento é ignorada pelo Updategram.

  • Quando está a escrever um esquema XSD, se o valor que especifica para a anotação sql:relation ou sql:field incluir um carácter especial, como um carácter espaço (por exemplo, no nome da tabela "Order Details"), esse valor deve estar entre parênteses (por exemplo, "[Order Details]").

  • Ao usar updategrams, as relações em cadeia não são suportadas. Por exemplo, se as tabelas A e C estiverem relacionadas através de uma relação de cadeia que utiliza a tabela B, ocorrerá o seguinte erro ao tentar executar e executar o updategram:

    There is an inconsistency in the schema provided.  
    

    Mesmo que tanto o esquema como o updategram estejam corretos e validamente formados, este erro ocorrerá se existir 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 texto/ntext e imagens, não devem ser usados no <bloco antes> ao trabalhar com updategrams, pois isso incluir-se-á para uso no controlo de concorrência. Isto pode causar problemas com o SQL Server devido às limitações na comparação dos tipos de BLOB. Por exemplo, a palavra-chave LIKE é usada na cláusula WHERE para comparar entre colunas do tipo de dado textual ; no entanto, as comparações falham no caso dos tipos BLOB em que o tamanho dos dados é superior a 8K.

  • Caracteres especiais em dados ntext podem causar problemas com SQLXML 4.0 devido às limitações na comparação para tipos BLOB. Por exemplo, a utilização de "[Serializable]" no <bloco antes> de um updategrama, quando usada na verificação de concorrência de uma coluna do tipo ntext , falhará com a seguinte descrição de erro SQLOLEDB:

    Empty update, no updatable rows found   Transaction aborted  
    

Ver também

Considerações de segurança do Updategram (SQLXML 4.0)