Condividi tramite


Linee guida e limitazioni degli updategram XML (SQLXML 4.0)

Quando si usano gli updategram XML, tenere presente quanto segue:

  • Se si usa un updategram per un'operazione di inserimento con una sola coppia di <blocchi prima e dopo, il blocco before>>può essere omesso<.<> Viceversa, nel caso di un'operazione di eliminazione, il <blocco after> può essere omesso.

  • Se si usa un updategram con più <blocchi prima> e <dopo> nel <tag di sincronizzazione>, sia prima> che<dopo> i blocchi< devono essere specificati per formare <coppie prima> e <dopo>.

  • Gli aggiornamenti in un updategram vengono applicati alla visualizzazione XML fornita da XML Schema. Pertanto, affinché il mapping predefinito abbia esito positivo, è necessario specificare il nome del file di schema nell'updategram oppure, se il nome file non viene specificato, i nomi degli elementi e degli attributi devono corrispondere ai nomi di tabella e colonna nel database.

  • SQLXML 4.0 richiede che tutti i valori di colonna in un updategram siano mappati in modo esplicito nello schema (XDR o XSD) forniti per comporre la visualizzazione XML per i relativi elementi figlio. Questo comportamento è diverso dalle versioni precedenti di SQLXML, che ha consentito un valore per una colonna non mappata nello schema se è stato implicito come parte della chiave esterna in un'annotazione sql:relationship . Si noti che questa modifica non influisce sulla propagazione dei valori di chiave primaria negli elementi figlio, che si verifica ancora per SQLXML 4.0 se non viene specificato in modo esplicito alcun valore per l'elemento figlio.

  • Se si usa un updategram per modificare i dati in una colonna binaria ,ad esempio il tipo di dati di SQL Server image , è necessario specificare uno schema di mapping in cui è necessario specificare il tipo di dati DI SQL Server (ad esempio , sql:datatype="image") e il tipo di dati XML (ad esempio, dt:type="binhex" o dt:type="binbase64). I dati per la colonna binaria devono essere specificati nell'updategram; L'annotazione sql:url-encode specificata nello schema di mapping viene ignorata dall'updategram.

  • Quando si scrive uno schema XSD, se il valore specificato per l'annotazione sql:relation o sql:field include un carattere speciale, ad esempio uno spazio (ad esempio, nel nome della tabella "Dettagli ordine"), questo valore deve essere racchiuso tra parentesi quadre (ad esempio"[Dettagli ordine]").

  • Quando si usano gli updategram, le relazioni di catena non sono supportate. Ad esempio, se le tabelle A e C sono correlate tramite una relazione di catena che usa la tabella B, si verificherà l'errore seguente quando si tenta di eseguire ed eseguire l'updategram:

    There is an inconsistency in the schema provided.  
    

    Anche se sia lo schema che l'updategram sono altrimenti corretti e validi, questo errore si verificherà se è presente una relazione di catena.

  • Gli updategram non consentono il passaggio di dati di image tipo come parametri durante gli aggiornamenti.

  • I tipi BLOB (Binary Large Object) come text/ntext e le immagini non devono essere usati nel blocco before> in< quando si usano gli updategram, perché verranno inclusi per l'uso nel controllo della concorrenza. Ciò può causare problemi con SQL Server a causa delle limitazioni sul confronto per i tipi BLOB. Ad esempio, la parola chiave LIKE viene usata nella clausola WHERE per il confronto tra colonne del text tipo di dati. Tuttavia, i confronti avranno esito negativo nel caso di tipi BLOB in cui le dimensioni dei dati sono maggiori di 8K.

  • I caratteri speciali nei ntext dati possono causare problemi con SQLXML 4.0 a causa delle limitazioni del confronto per i tipi BLOB. Ad esempio, l'uso di "[Serializable]" nel <blocco prima> di un updategram quando viene usato nel controllo della concorrenza di una colonna di ntext tipo avrà esito negativo con la descrizione dell'errore SQLOLEDB seguente:

    Empty update, no updatable rows found   Transaction aborted  
    

Vedere anche

Considerazioni sulla sicurezza di Updategram (SQLXML 4.0)