Freigeben über


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

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

  • Wenn Sie ein Updategram für einen Einfügevorgang mit nur einem Paar aus einem <before>-Block und einem <after>-Block verwenden, kann der <before>-Block weggelassen werden. Umgekehrt kann der <after>-Block bei einem Löschvorgang weggelassen werden.

  • Wenn Sie ein Updategram mit mehreren <before>-Blöcken und <after>-Blöcken im <sync>-Tag verwenden, müssen sowohl die <before>-Blöcke als auch die <after>-Blöcke angegeben werden, um Paare aus <before> und <after> zu bilden.

  • 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 es zuließen, dass ein Wert für eine Spalte nicht im Schema zugeordnet war, wenn er als Teil eines 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 Updategram verwenden, um Daten in einer binären Spalte zu bearbeiten (zum Beispiel der SQL Server image-Datentyp), müssen Sie ein Zuordnungsschema bereitstellen, in dem der SQL Server-Datentyp (zum Beispiel sql:datatype="image") und der XML-Datentyp (zum Beispiel dt:type="binhex" oder dt:type="binbase64) angegeben werden müssen. Die Daten für die binäre Spalte müssen im Updategram angegeben werden. Die sql:url-encode-Anmerkung, die im Zuordnungsschema angegeben wird, wird vom Updategram ignoriert.

  • Wenn Sie ein XSD-Schema erstellen und der Wert, den Sie für die sql:relation- oder die sql:field-Anmerkung erstellen ein Sonderzeichen enthält, wie zum Beispiel ein Leerzeichen (etwa im Tabellennamen "Details Bestellung"), muss dieser Wert in Klammern eingeschlossen werden (beispielsweise, "[Details Bestellung]").

  • 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.

  • Updategrams erlauben nicht das Weitergeben von Daten vom Typ image als Parameter während eines Updates.

  • BLOB-Typen (Binary Large Object), wie zum Beispiel text/ntext, und Images sollten nicht im <before>-Block verwendet werden, wenn Sie mit Updategrams arbeiten, da sie auf diese Weise für die Verwendung in der Parallelitätssteuerung eingeschlossen werden. Dies kann wegen der Einschränkungen auf Vergleich für BLOB-Typen Probleme mit SQL Server verursachen. Das gilt zum Beispiel für das LIKE-Schlüsselwort in der WHERE-Klausel zwischen Spalten des text-Datentyps. Vergleiche schlagen allerdings für BLOB-Typen fehl, deren Datengröße 8 K übersteigt.

  • Sonderzeichen in ntext-Daten können aufgrund der Vergleichseinschränkungen bei BLOB-Typen Probleme mit SQLXML 4.0 verursachen. Die Verwendung von "[Serializable]" im <before>-Block eines Updategrams, das in der Parallelitätsprüfung einer Spalte vom Typ ntext verwendet wird, schlägt beispielsweise mit der folgenden SQLOLEDB-Fehlerbeschreibung fehl:

    Empty update, no updatable rows found   Transaction aborted
    

Siehe auch

Verweis

Sicherheitsüberlegungen zu Updategrams (SQLXML 4.0)