Teilen über


Richtlinien und Einschränkungen von XML-Updategrams (SQLXML 4.0)

Gilt für: SQL Server Azure SQL-Datenbank

Wenn Sie XML-Updategrams verwenden, sind folgende Überlegungen zu berücksichtigen:

  • Wenn Sie ein Aktualisierungsdiagramm für einen Einfügevorgang mit nur einem einzelnen Paar vor <>und <nach> Blöcken verwenden, kann der< Before-Block> weggelassen werden. Umgekehrt kann bei einem Löschvorgang der <Nachblock> weggelassen werden.

  • Wenn Sie ein Aktualisierungsdiagramm mit mehreren <Vor>- und <Nach-Blöcken> im< Synchronisierungstag> verwenden, müssen sowohl vor> als <auch< nach> Blöcken vor und nach Blöcken vor und <nach> Paaren angegeben <> werden.

  • Die Updates in einem Updategram werden auf die XML-Sicht angewendet, die vom XML-Schema bereitgestellt wird. Daher müssen Sie für eine erfolgreiche Standardzuordnung den Schemadateinamen im Updategram angeben. Falls der Dateiname nicht bereitgestellt wird, müssen die Element- und Attributnamen mit den Tabellen- und Spaltennamen in der Datenbank übereinstimmen.

  • SQLXML 4.0 setzt voraus, dass alle Spaltenwerte in einem Updategram ausdrücklich im bereitgestellten Schema (XDR oder XSD) zugeordnet werden, um die XML-Sicht für die untergeordneten Elemente zu erstellen. Dieses Verhalten unterscheidet sich von früheren Versionen von SQLXML, die einen Wert für eine Spalte zugelassen haben, die nicht im Schema zugeordnet ist, wenn sie als Teil des Fremdschlüssels in einer sql:relationship-Anmerkung impliziert wurde. (Beachten Sie, dass sich diese Änderung nicht auf die Propagierung von Primärschlüsselwerten an untergeordnete Elemente auswirkt, was immer noch für SQLXML 4.0 gilt, wenn für das untergeordnete Element kein Wert ausdrücklich angegeben wird.)

  • Wenn Sie ein Aktualisierungsdiagramm zum Ändern von Daten in einer binären Spalte (z. B. dem SQL Server-Bilddatentyp) verwenden, müssen Sie ein Zuordnungsschema angeben, in dem der SQL Server-Datentyp (z. B. sql:datatype="image") und der XML-Datentyp (z. B. dt:type="binhex" oder dt:type="binbase64) angegeben werden müssen. Die Daten für die binäre Spalte müssen im Updatediagramm angegeben werden; die im Zuordnungsschema angegebene sql:url-codierte Anmerkung wird vom Updategram ignoriert.

  • Wenn Sie ein XSD-Schema schreiben, enthält der wert, den Sie für die sql:relation oder sql:field annotation angeben, ein Sonderzeichen, z. B. ein Leerzeichen (z. B. im Tabellennamen "Bestelldetails"), dieser Wert muss in eckige Klammern eingeschlossen werden (z. B. "[Bestelldetails]").

  • Wenn sie Updategrams verwenden, werden Kettenbeziehungen nicht unterstützt. Wenn beispielsweise die Tabellen A und C über eine Kettenbeziehung miteinander verknüpft sind, die Tabelle B verwendet, tritt der folgende Fehler auf, wenn Sie versuchen, das Updategram auszuführen:

    There is an inconsistency in the schema provided.  
    

    Auch wenn Schema und Updategram ansonsten korrekt und gültig sind, tritt dieser Fehler auf, wenn eine Kettenbeziehung vorhanden ist.

  • Aktualisierungsdiagramme lassen die Übergabe von Bildtypdaten während Updates nicht als Parameter zu.

  • Blob-Typen (Binary Large Object) wie Text/ntext und Bilder sollten beim Arbeiten mit Aktualisierungsdiagrammen nicht im <Before-Block> verwendet werden, da dies sie für die Verwendung im Parallelitätssteuerelement enthält. Dies kann aufgrund der Einschränkungen beim Vergleich für BLOB-Typen zu Problemen mit SQL Server führen. Beispielsweise wird das LIKE-Schlüsselwort in der WHERE-Klausel zum Vergleichen zwischen Spalten des Textdatentyps verwendet. Bei BLOB-Typen, bei denen die Größe der Daten größer als 8 KB ist, tritt jedoch ein Fehler auf.

  • Sonderzeichen in ntext-Daten können aufgrund der Einschränkungen beim Vergleich für BLOB-Typen Probleme mit SQLXML 4.0 verursachen. Beispielsweise schlägt die Verwendung von "[Serializable]" im <Before-Block> eines Aktualisierungsdiagramms bei Verwendung bei der Parallelitätsprüfung einer Spalte des ntext-Typs mit der folgenden SQLOLEDB-Fehlerbeschreibung fehl:

    Empty update, no updatable rows found   Transaction aborted  
    

Weitere Informationen

Sicherheitsüberlegungen zu Updategramms (SQLXML 4.0)