Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein Updategram gibt einen Einfügevorgang an, wenn eine Datensatzinstanz im <After-Block> , aber nicht im entsprechenden <vor> dem Block angezeigt wird. In diesem Fall fügt das Updatediagramm den Datensatz in den <After-Block> in die Datenbank ein.
Dies ist das Updatediagrammformat für einen Einfügevorgang:
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync [mapping-schema="SampleSchema.xml"] >
[<updg:before>
</updg:before>]
<updg:after [updg:returnid="x y ...] >
<ElementName [updg:id="value"]
[updg:at-identity="x"]
[updg:guid="y"]
attribute="value"
attribute="value"
...
/>
[<ElementName .../>... ]
</updg:after>
</updg:sync>
</ROOT>
<vor> Blockierung
Der <Before-Block> kann für einen Einfügevorgang weggelassen werden. Wenn das optionale mapping-schema Attribut nicht angegeben ist, ordnet der <im Updatediagramm angegebene Elementname> einer Datenbanktabelle und den untergeordneten Elementen oder Attributen Spalten in der Tabelle zu.
<nach> Blockierung
Sie können einen oder mehrere Datensätze im <After-Block> angeben.
Wenn der <After-Block> keinen Wert für eine bestimmte Spalte liefert, verwendet das Updatediagramm den Standardwert, der im kommentierten Schema angegeben ist (wenn ein Schema angegeben wurde). Wenn das Schema keinen Standardwert für die Spalte angibt, gibt das Updatediagramm keinen expliziten Wert für diese Spalte an und weist stattdessen dieser Spalte den Standardwert von Microsoft SQL Server (sofern angegeben) zu. Wenn kein SQL Server-Standardwert vorhanden ist und die Spalte einen NULL-Wert akzeptiert, legt das Updatediagramm den Spaltenwert auf NULL fest. Wenn die Spalte weder über einen Standardwert verfügt noch einen NULL-Wert akzeptiert, schlägt der Befehl fehl, und das Updatediagramm gibt einen Fehler zurück. Das optionale updg:returnid Attribut wird verwendet, um den Identitätswert zurückzugeben, der vom System generiert wird, wenn ein Datensatz in einer Tabelle mit einer IDENTITY-Typ-Spalte hinzugefügt wird.
updg:id-Attribut
Wenn das Updategram nur Datensätze einfügt, erfordert das Updategram nicht das updg:id Attribut. Weitere Informationen updg:idfinden Sie unter Aktualisieren von Daten mithilfe von XML-Updategrams (SQLXML 4.0).
updg:at-identity-Attribut
Wenn ein Updategram einen Datensatz in eine Tabelle einfügt, die über eine IDENTITY-Typ-Spalte verfügt, kann das Updategram den vom System zugewiesenen Wert mithilfe des optionalen updg:at-identity Attributs erfassen. Das Updatediagramm kann diesen Wert dann in nachfolgenden Vorgängen verwenden. Beim Ausführen des Updategramms können Sie den Identitätswert zurückgeben, der durch Angeben des updg:returnid Attributs generiert wird.
updg:guid-Attribut
Das updg:guid Attribut ist ein optionales Attribut, das einen global eindeutigen Bezeichner generiert. Dieser Wert verbleibt im Bereich des gesamten <Synchronisierungsblocks> , in dem er angegeben ist. Sie können diesen Wert an beliebiger Stelle im Synchronisierungsblock<> verwenden. Das Attribut ruft die NEWGUID()SQL Server-Funktion auf, um den eindeutigen Bezeichner zu generieren.
Beispiele
Zum Erstellen von Arbeitsbeispielen mit den folgenden Beispielen müssen Sie die anforderungen erfüllen, die in "Requirements for Running SQLXML Examples" angegeben sind.
Bevor Sie die Updategrammbeispiele verwenden, beachten Sie Folgendes:
In den meisten Beispielen wird die Standardzuordnung verwendet (d. a. im Updategram wird kein Zuordnungsschema angegeben). Weitere Beispiele für Updategramme, die Zuordnungsschemas verwenden, finden Sie unter Angeben eines kommentierten Zuordnungsschemas in einem Updategram (SQLXML 4.0).
Die meisten Beispiele verwenden die AdventureWorks2012-Beispieldatenbank . Alle Aktualisierungen werden auf die Tabellen in dieser Datenbank angewendet.
Ein. Einfügen eines Datensatzes mithilfe eines Aktualisierungsdiagramms
Dieses attributorientierte Aktualisierungsdiagramm fügt einen Datensatz in die Tabelle "HumanResources.Employee" in der AdventureWorks2012-Datenbank ein.
In diesem Beispiel gibt das Updategram kein Zuordnungsschema an. Daher verwendet das Updategram die Standardzuordnung, in der der Elementname einem Tabellennamen und den Attributen oder untergeordneten Elementen zugeordnet ist, spalten in dieser Tabelle zugeordnet ist.
Das AdventureWorks2012-Schema für die Tabelle "HumanResources.Department" erzwingt eine Einschränkung "nicht null" für alle Spalten. Daher muss das Updatediagramm Werte enthalten, die für alle Spalten angegeben sind. Die Abteilungs-ID ist eine IDENTITY-Typspalte. Daher werden keine Werte dafür angegeben.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync >
<updg:before>
</updg:before>
<updg:after>
<HumanResources.Department
Name="New Product Research"
GroupName="Research and Development"
ModifiedDate="2010-08-31"/>
</updg:after>
</updg:sync>
</ROOT>
So testen Sie eine XPath-Beispielabfrage für das Schema
Kopieren Sie das oben gezeigte Updatediagramm, und fügen Sie es in eine Textdatei ein. Speichern Sie die Datei als MyUpdategram.xml.
Erstellen und verwenden Sie das SQLXML 4.0-Testskript (Sqlxml4test.vbs), um die Vorlage auszuführen.
Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.
In einer elementzentrierten Zuordnung sieht das Updatediagramm wie folgt aus:
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync >
<updg:before>
</updg:before>
<updg:after>
<HumanResources.Department>
<Name> New Product Research </Name>
<GroupName> Research and Development </GroupName>
<ModifiedDate>2010-08-31</ModifiedDate>
</HumanResources.Department>
</updg:after>
</updg:sync>
</ROOT>
In einem Aktualisierungsdiagramm im gemischten Modus (elementzentriertes und attributorientiertes) Updatediagramm kann ein Element sowohl Attribute als auch Unterelemente aufweisen, wie in diesem Updategram gezeigt:
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync >
<updg:before>
</updg:before>
<updg:after>
<HumanResources.Department
Name=" New Product Research "
<GroupName>Research and Development</GroupName>
<ModifiedDate>2010-08-31</ModifiedDate>
</HumanResources.Department>
</updg:after>
</updg:sync>
</ROOT>
B. Einfügen mehrerer Datensätze mithilfe eines Aktualisierungsdiagramms
Dieses Updategram fügt der Tabelle "HumanResources.Shift" zwei neue Schichtdatensätze hinzu. Das Updategram gibt den optionalen <Vorblock> nicht an.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync>
<updg:after >
<HumanResources.Shift Name="Day-Evening"
StartTime="1900-01-01 11:00:00.000"
EndTime="1900-01-01 19:00:00.000"
ModifiedDate="2004-01-01 00:00:00.000" />
<HumanResources.Shift Name="Evening-Night"
StartTime="1900-01-01 19:00:00.000"
EndTime="1900-01-01 03:00:00.000"
ModifiedDate="2004-01-01 00:00:00.000" />
</updg:after>
</updg:sync>
</ROOT>
So testen Sie eine XPath-Beispielabfrage für das Schema
Kopieren Sie das oben gezeigte Updatediagramm, und fügen Sie es in eine Textdatei ein. Speichern Sie die Datei als Updategram-AddShifts.xml.
Erstellen und verwenden Sie das SQLXML 4.0-Testskript (Sqlxml4test.vbs), um die Vorlage auszuführen.
Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.
Eine andere Version dieses Beispiels ist ein Updatediagramm, das zwei separate <Nachblöcken> anstelle eines Blocks verwendet, um die beiden Mitarbeiter einzufügen. Dies ist gültig und kann wie folgt codiert werden:
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync>
<updg:after >
<HumanResources.Shift Name="Day-Evening"
StartTime="1900-01-01 11:00:00.000"
EndTime="1900-01-01 19:00:00.000"
ModifiedDate="2004-01-01 00:00:00.000" />
</updg:after>
<updg:before>
</updg:before>
<updg:after >
<HumanResources.Shift Name="Evening-Night"
StartTime="1900-01-01 19:00:00.000"
EndTime="1900-01-01 03:00:00.000"
ModifiedDate="2004-01-01 00:00:00.000" />
</updg:after>
</updg:sync>
</ROOT>
C. Arbeiten mit gültigen SQL Server-Zeichen, die in XML ungültig sind
In SQL Server können Tabellennamen ein Leerzeichen enthalten, z. B. die Tabelle "Bestelldetails" in der Northwind-Datenbank. Dies ist jedoch in XML-Zeichen, die gültige SQL Server-Bezeichner, aber keine gültigen XML-Bezeichner sind, mithilfe von "__xHHHH__" als Codierungswert codiert werden können, wobei HHHH für den vierstelligen hexadezimalen UCS-2-Code für das Zeichen in der wichtigsten Bit-ersten Reihenfolge steht.
Hinweis
In diesem Beispiel wird die Northwind-Datenbank verwendet. Sie können die Northwind-Datenbank mithilfe eines SQL-Skripts installieren, das von dieser Microsoft-Website heruntergeladen werden kann.
Außerdem muss der Elementname in eckige Klammern ([ ]) eingeschlossen werden. Da die Zeichen [und] in XML nicht gültig sind, müssen Sie sie als _x005B_ bzw. _x005D_ codieren. (Wenn Sie ein Zuordnungsschema verwenden, können Sie Elementnamen angeben, die keine ungültigen Zeichen enthalten, z. B. Leerzeichen. Das Zuordnungsschema führt die erforderliche Zuordnung durch; Daher müssen Sie diese Zeichen nicht codieren).
Mit diesem Updatediagramm wird der Tabelle "Bestelldetails" in der Northwind-Datenbank ein Datensatz hinzugefügt:
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync >
<updg:before>
</updg:before>
<updg:after>
<_x005B_Order_x0020_Details_x005D_ OrderID="1"
ProductID="11"
UnitPrice="$1.0"
Quantity="1"
Discount="0.0" />
</updg:after>
</updg:sync>
</ROOT>
Die Spalte "Einzelpreis" in der Tabelle "Bestelldetails" weist den money Typ auf. Um die entsprechende Typkonvertierung (von einem string Typ auf einen money Typ) anzuwenden, muss das Dollarzeichenzeichen ($) als Teil des Werts hinzugefügt werden. Wenn das Updategram kein Zuordnungsschema angibt, wird das erste Zeichen des string Werts ausgewertet. Wenn das erste Zeichen ein Dollarzeichen ($) ist, wird die entsprechende Konvertierung angewendet.
Wenn das Updategram für ein Zuordnungsschema angegeben wird, bei dem die Spalte entsprechend als entweder dt:type="fixed.14.4"sql:datatype="money"oder markiert ist, ist das Dollarzeichen ($) nicht erforderlich und die Konvertierung wird von der Zuordnung verarbeitet. Dies ist die empfohlene Methode, um sicherzustellen, dass die entsprechende Typkonvertierung auftritt.
So testen Sie eine XPath-Beispielabfrage für das Schema
Kopieren Sie das oben gezeigte Updatediagramm, und fügen Sie es in eine Textdatei ein. Speichern Sie die Datei als UpdategramSpacesInTableName.xml.
Erstellen und verwenden Sie das SQLXML 4.0-Testskript (Sqlxml4test.vbs), um die Vorlage auszuführen.
Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.
D. Verwenden des At-Identity-Attributs zum Abrufen des Werts, der in die Spalte "IDENTITY"-Typ eingefügt wurde
Das folgende Updategram fügt zwei Datensätze ein: eine in der Tabelle "Sales.SalesOrderHeader" und eine weitere in der Tabelle "Sales.SalesOrderDetail".
Zuerst fügt das Updategram der Tabelle "Sales.SalesOrderHeader" einen Datensatz hinzu. In dieser Tabelle ist die Spalte "SalesOrderID" eine Spalte vom Typ IDENTITY. Wenn Sie diesen Datensatz der Tabelle hinzufügen, verwendet das Updategram daher das at-identity Attribut, um den zugewiesenen SalesOrderID-Wert als "x" (ein Platzhalterwert) zu erfassen. Das Updategam gibt diese at-identity Variable dann als Wert des SalesOrderID-Attributs im <Sales.SalesOrderDetail-Element> an.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync >
<updg:before>
</updg:before>
<updg:after>
<Sales.SalesOrderHeader updg:at-identity="x"
RevisionNumber="1"
OrderDate="2001-07-01 00:00:00.000"
DueDate="2001-07-13 00:00:00.000"
OnlineOrderFlag="0"
CustomerID="676"
ContactID="378"
BillToAddressID="985"
ShipToAddressID="985"
ShipMethodID="5"
SubTotal="24643.9362"
TaxAmt="1971.5149"
Freight="616.0984"
rowguid="00001111-2222-3333-4444-556677889900"
ModifiedDate="2001-07-08 00:00:00.000" />
<Sales.SalesOrderDetail SalesOrderID="x"
LineNumber="1"
OrderQty="1"
ProductID="776"
SpecialOfferID="1"
UnitPrice="2429.9928"
UnitPriceDiscount="0.00"
rowguid="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
ModifiedDate="2001-07-01 00:00:00.000" />
</updg:after>
</updg:sync>
</ROOT>
Wenn Sie den Vom updg:at-identity Attribut generierten Identitätswert zurückgeben möchten, können Sie das updg:returnid Attribut verwenden. Es folgt ein überarbeitetes Updategram, das diesen Identitätswert zurückgibt. (Mit diesem Updatediagramm werden zwei Bestelldatensätze und zwei Auftragsdetaildatensätze hinzugefügt, um das Beispiel etwas komplexer zu gestalten.)
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync>
<updg:before>
</updg:before>
<updg:after updg:returnid="x y" >
<HumanResources.Shift updg:at-identity="x" Name="Day-Evening"
StartTime="1900-01-01 11:00:00.000"
EndTime="1900-01-01 19:00:00.000"
ModifiedDate="2004-01-01 00:00:00.000" />
<HumanResources.Shift updg:at-identity="y" Name="Evening-Night"
StartTime="1900-01-01 19:00:00.000"
EndTime="1900-01-01 03:00:00.000"
ModifiedDate="2004-01-01 00:00:00.000" />
</updg:after>
</updg:sync>
</ROOT>
Wenn das Updategram ausgeführt wird, gibt es Ergebnisse ähnlich wie folgt zurück, die den Identitätswert (den generierten Wert der shiftID-Spalte für die Tabellenidentität) enthalten, die generiert wurde:
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<returnid>
<x>4</x>
<y>5</y>
</returnid>
</ROOT>
So testen Sie eine XPath-Beispielabfrage für das Schema
Kopieren Sie das oben gezeigte Updatediagramm, und fügen Sie es in eine Textdatei ein. Speichern Sie die Datei als Updategram-returnId.xml.
Erstellen und verwenden Sie das SQLXML 4.0-Testskript (Sqlxml4test.vbs), um die Vorlage auszuführen.
Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.
E. Verwenden des updg:guid-Attributs zum Generieren eines eindeutigen Werts
In diesem Beispiel fügt das Updatediagramm einen Datensatz in die Cust- und CustOrder-Tabellen ein. Außerdem generiert das Updategram einen eindeutigen Wert für das CustomerID-Attribut mithilfe des updg:guid Attributs.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync >
<updg:before>
</updg:before>
<updg:after updg:returnid="x" >
<Cust updg:guid="x" >
<CustID>x</CustID>
<LastName>Fuller</LastName>
</Cust>
<CustOrder>
<CustID>x</CustID>
<OrderID>1</OrderID>
</CustOrder>
</updg:after>
</updg:sync>
</ROOT>
Das Updategram gibt das returnid Attribut an. Daher wird die generierte GUID zurückgegeben:
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<returnid>
<x>7111BD1A-7F0B-4CEE-B411-260DADFEFA2A</x>
</returnid>
</ROOT>
So testen Sie das Updategramm
Kopieren Sie das oben gezeigte Updatediagramm, und fügen Sie es in eine Textdatei ein. Speichern Sie die Datei als Updategram-GenerateGuid.xml.
Erstellen Sie diese Tabellen:
USE tempdb CREATE TABLE Cust (CustID uniqueidentifier, LastName varchar(20)) CREATE TABLE CustOrder (CustID uniqueidentifier, OrderID int)Erstellen und verwenden Sie das SQLXML 4.0-Testskript (Sqlxml4test.vbs), um die Vorlage auszuführen.
Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.
F. Angeben eines Schemas in einem Updatediagramm
Das Updatediagramm in diesem Beispiel fügt einen Datensatz in die folgende Tabelle ein:
CustOrder(OrderID, EmployeeID, OrderType)
In diesem Updategram wird ein XSD-Schema angegeben (d. h., es gibt keine Standardzuordnung von Updategramelementen und Attributen). Das Schema stellt die erforderliche Zuordnung der Elemente und Attribute zu den Datenbanktabellen und -spalten bereit.
Das folgende Schema (CustOrderSchema.xml) beschreibt ein CustOrder-Element<>, das aus den Attributen OrderID und EmployeeID besteht. Um das Schema interessanter zu gestalten, wird dem EmployeeID-Attribut ein Standardwert zugewiesen. Ein Updategram verwendet den Standardwert eines Attributs nur für Einfügevorgänge, und nur dann, wenn das Updategram dieses Attribut nicht angibt.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="CustOrder" >
<xsd:complexType>
<xsd:attribute name="OrderID" type="xsd:integer" />
<xsd:attribute name="EmployeeID" type="xsd:integer" />
<xsd:attribute name="OrderType " type="xsd:integer" default="1"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Dieses Updategram fügt einen Datensatz in die CustOrder-Tabelle ein. Das Updategram gibt nur die Attributwerte OrderID und EmployeeID an. Der OrderType-Attributwert wird nicht angegeben. Daher verwendet das Updategram den Standardwert des EmployeeID-Attributs, das im vorherigen Schema angegeben ist.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"
xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync mapping-schema='CustOrderSchema.xml'>
<updg:after>
<CustOrder OrderID="98000" EmployeeID="1" />
</updg:after>
</updg:sync>
</ROOT>
Weitere Beispiele für Updategramme, die ein Zuordnungsschema angeben, finden Sie unter Angeben eines kommentierten Zuordnungsschemas in einem Updategram (SQLXML 4.0).
So testen Sie das Updategramm
Erstellen Sie diese Tabelle in der tempdb-Datenbank :
USE tempdb CREATE TABLE CustOrder( OrderID int, EmployeeID int, OrderType int)Kopieren Sie das obige Schema, und fügen Sie es in eine Textdatei ein. Speichern Sie die Datei als CustOrderSchema.xml.
Kopieren Sie das oben gezeigte Updatediagramm, und fügen Sie es in eine Textdatei ein. Speichern Sie die Datei als CustOrderUpdategram.xml im gleichen Ordner, der im vorherigen Schritt verwendet wird.
Erstellen und verwenden Sie das SQLXML 4.0-Testskript (Sqlxml4test.vbs), um das Updategramm auszuführen.
Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.
Dies ist das entsprechende XDR-Schema:
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ElementType name="CustOrder" >
<AttributeType name="OrderID" />
<AttributeType name="EmployeeID" />
<AttributeType name="OrderType" default="1" />
<attribute type="OrderID" />
<attribute type="EmployeeID" />
<attribute type="OrderType" />
</ElementType>
</Schema>
G. Verwenden des xsi:nil-Attributs zum Einfügen von Nullwerten in eine Spalte
Wenn Sie einen NULL-Wert in die entsprechende Spalte in der Tabelle einfügen möchten, können Sie das xsi:nil Attribut für ein Element in einem Aktualisierungsdiagramm angeben. Im entsprechenden XSD-Schema muss auch das XSD-Attribut nillable angegeben werden.
Betrachten Sie z. B. dieses XSD-Schema:
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Student" sql:relation="Students">
<xsd:complexType>
<xsd:all>
<xsd:element name="fname" sql:field="first_name"
type="xsd:string"
nillable="true"/>
</xsd:all>
<xsd:attribute name="SID"
sql:field="StudentID"
type="xsd:ID"/>
<xsd:attribute name="lname"
sql:field="last_name"
type="xsd:string"/>
<xsd:attribute name="minitial"
sql:field="middle_initial"
type="xsd:string"/>
<xsd:attribute name="years"
sql:field="no_of_years"
type="xsd:integer"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Das XSD-Schema gibt nillable="true" für das <fname-Element> an. Das folgende Updategram verwendet dieses Schema:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"
xmlns:updg="urn:schemas-microsoft-com:xml-updategram"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<updg:sync mapping-schema='StudentSchema.xml'>
<updg:before/>
<updg:after>
<Student SID="S00004" lname="Elmaci" minitial="" years="2">
<fname xsi:nil="true">
</fname>
</Student>
</updg:after>
</updg:sync>
</ROOT>
Das Updategram gibt für das <fname-Element> im <After-Block> anxsi:nil. Wenn dieses Updatediagramm ausgeführt wird, wird daher ein Wert von NULL für die first_name Spalte in der Tabelle eingefügt.
So testen Sie das Updategramm
Erstellen Sie die folgende Tabelle in der tempdb-Datenbank :
USE tempdb CREATE TABLE Students ( StudentID char(6)NOT NULL , first_name varchar(50), last_name varchar(50), middle_initial char(1), no_of_years int NULL) GOKopieren Sie das obige Schema, und fügen Sie es in eine Textdatei ein. Speichern Sie die Datei als StudentSchema.xml.
Kopieren Sie das oben gezeigte Updatediagramm, und fügen Sie es in eine Textdatei ein. Speichern Sie die Datei als StudentUpdategram.xml im selben Ordner, der im vorherigen Schritt zum Speichern StudentSchema.xmlverwendet wurde.
Erstellen und verwenden Sie das SQLXML 4.0-Testskript (Sqlxml4test.vbs), um das Updategramm auszuführen.
Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.
H. Angeben von Namespaces in einem Updategram
In einem Updategram können Sie Elemente haben, die zu einem Namespace gehören, der im selben Element im Updategram deklariert ist. In diesem Fall muss das entsprechende Schema auch denselben Namespace deklarieren, und das Element muss zu diesem Zielnamespace gehören.
Beispielsweise gehört das Order-Element> im folgenden Updategram (UpdateGram-ElementHavingNamespace.xml)< zu einem namespace, der im Element deklariert ist.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync mapping-schema='XSD-ElementHavingNameSpace.xml'>
<updg:after>
<x:Order xmlns:x="https://server/xyz/schemas/"
updg:at-identity="SalesOrderID"
RevisionNumber="1"
OrderDate="2001-07-01 00:00:00.000"
DueDate="2001-07-13 00:00:00.000"
OnlineOrderFlag="0"
CustomerID="676"
ContactID="378"
BillToAddressID="985"
ShipToAddressID="985"
ShipMethodID="5"
SubTotal="24643.9362"
TaxAmt="1971.5149"
Freight="616.0984"
rowguid="00009999-8888-7777-6666-554433221100"
ModifiedDate="2001-07-08 00:00:00.000" />
</updg:after>
</updg:sync>
</ROOT>
In diesem Fall muss das Schema auch den Namespace deklarieren, wie in diesem Schema dargestellt:
Das folgende Schema (XSD-ElementHavingNamespace.xml) zeigt, wie das entsprechende Element und die entsprechenden Attribute deklariert werden müssen.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:dt="urn:schemas-microsoft-com:datatypes"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema"
xmlns:x="https://server/xyz/schemas/"
targetNamespace="https://server/xyz/schemas/" >
<xsd:element name="Order" sql:relation="Sales.SalesOrderHeader" type="x:Order_type"/>
<xsd:complexType name="Order_type">
<xsd:attribute name="SalesOrderID" type="xsd:ID"/>
<xsd:attribute name="RevisionNumber" type="xsd:unsignedByte"/>
<xsd:attribute name="OrderDate" type="xsd:dateTime"/>
<xsd:attribute name="DueDate" type="xsd:dateTime"/>
<xsd:attribute name="ShipDate" type="xsd:dateTime"/>
<xsd:attribute name="Status" type="xsd:unsignedByte"/>
<xsd:attribute name="OnlineOrderFlag" type="xsd:boolean"/>
<xsd:attribute name="SalesOrderNumber" type="xsd:string"/>
<xsd:attribute name="PurchaseOrderNumber" type="xsd:string"/>
<xsd:attribute name="AccountNumber" type="xsd:string"/>
<xsd:attribute name="CustomerID" type="xsd:int"/>
<xsd:attribute name="ContactID" type="xsd:int"/>
<xsd:attribute name="SalesPersonID" type="xsd:int"/>
<xsd:attribute name="TerritoryID" type="xsd:int"/>
<xsd:attribute name="BillToAddressID" type="xsd:int"/>
<xsd:attribute name="ShipToAddressID" type="xsd:int"/>
<xsd:attribute name="ShipMethodID" type="xsd:int"/>
<xsd:attribute name="CreditCardID" type="xsd:int"/>
<xsd:attribute name="CreditCardApprovalCode" type="xsd:string"/>
<xsd:attribute name="CurrencyRateID" type="xsd:int"/>
<xsd:attribute name="SubTotal" type="xsd:decimal"/>
<xsd:attribute name="TaxAmt" type="xsd:decimal"/>
<xsd:attribute name="Freight" type="xsd:decimal"/>
<xsd:attribute name="TotalDue" type="xsd:decimal"/>
<xsd:attribute name="Comment" type="xsd:string"/>
<xsd:attribute name="rowguid" type="xsd:string"/>
<xsd:attribute name="ModifiedDate" type="xsd:dateTime"/>
</xsd:complexType>
</xsd:schema>
So testen Sie das Updategramm
Kopieren Sie das obige Schema, und fügen Sie es in eine Textdatei ein. Speichern Sie die Datei als XSD-ElementHavingNamespace.xml.
Kopieren Sie das oben gezeigte Updatediagramm, und fügen Sie es in eine Textdatei ein. Speichern Sie die Datei als Updategram-ElementHavingNamespace.xml im selben Ordner, der zum Speichern XSD-ElementHavingnamespace.xmlverwendet wird.
Erstellen und verwenden Sie das SQLXML 4.0-Testskript (Sqlxml4test.vbs), um das Updategramm auszuführen.
Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.
Ich. Einfügen von Daten in eine XML-Datentypspalte
Der xml Datentyp wurde in SQL Server 2005 eingeführt. Sie können Aktualisierungsdiagramme verwenden, um Daten einzufügen und zu aktualisieren, die in xml Datentypspalten gespeichert sind, mit den folgenden Bestimmungen:
Die
xmlSpalte kann nicht zum Identifizieren einer vorhandenen Zeile verwendet werden. Daher kann es nicht in denupdg:beforeAbschnitt eines Aktualisierungsdiagramms eingeschlossen werden.Namespaces, die sich im Bereich des in die
xmlSpalte eingefügten XML-Fragments befinden, werden beibehalten, und ihre Namespacedeklarationen werden dem obersten Element des eingefügten Fragments hinzugefügt.
Beispielsweise aktualisiert das Desc-Element> im folgenden Updategram (SampleUpdateGram.xml)< die Spalte "ProductDescription" in der Tabelle "Production>productModel" in der AdventureWorks2012-Beispieldatenbank. Das Ergebnis dieses Updategrams ist, dass der XML-Inhalt der Spalte "ProductDescription" mit dem XML-Inhalt des <Desc-Elements> aktualisiert wird.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync mapping-schema="SampleSchema.xml" >
<updg:before>
<ProductModel ProductModelID="19">
<Name>Mountain-100</Name>
</ProductModel>
</updg:before>
<updg:after>
<ProductModel>
<Name>Mountain-100</Name>
<Desc><?xml-stylesheet href="ProductDescription.xsl" type="text/xsl"?>
<p1:ProductDescription xmlns:p1="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription"
xmlns:wm="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain"
xmlns:wf="https://www.adventure-works.com/schemas/OtherFeatures"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="">
<p1:Summary>
<html:p>Insert Example</html:p>
</p1:Summary>
<p1:Manufacturer>
<p1:Name>AdventureWorks</p1:Name>
<p1:Copyright>2002</p1:Copyright>
<p1:ProductURL>HTTP://www.Adventure-works.com</p1:ProductURL>
</p1:Manufacturer>
<p1:Features>These are the product highlights.
<wm:Warranty>
<wm:WarrantyPeriod>3 years</wm:WarrantyPeriod>
<wm:Description>parts and labor</wm:Description>
</wm:Warranty>
<wm:Maintenance>
<wm:NoOfYears>10 years</wm:NoOfYears>
<wm:Description>maintenance contract available through your dealer or any AdventureWorks retail store.</wm:Description>
</wm:Maintenance>
<wf:wheel>High performance wheels.</wf:wheel>
<wf:saddle>
<html:i>Anatomic design</html:i> and made from durable leather for a full-day of riding in comfort.</wf:saddle>
<wf:pedal>
<html:b>Top-of-the-line</html:b> clipless pedals with adjustable tension.</wf:pedal>
<wf:BikeFrame>Each frame is hand-crafted in our Bothell facility to the optimum diameter and wall-thickness required of a premium mountain frame. The heat-treated welded aluminum frame has a larger diameter tube that absorbs the bumps.</wf:BikeFrame>
<wf:crankset> Triple crankset; alumunim crank arm; flawless shifting. </wf:crankset>
</p1:Features>
<p1:Picture>
<p1:Angle>front</p1:Angle>
<p1:Size>small</p1:Size>
<p1:ProductPhotoID>118</p1:ProductPhotoID>
</p1:Picture>
<p1:Specifications> These are the product specifications.
<Material>Almuminum Alloy</Material>
<Color>Available in most colors</Color>
<ProductLine>Mountain bike</ProductLine>
<Style>Unisex</Style>
<RiderExperience>Advanced to Professional riders</RiderExperience>
</p1:Specifications>
</p1:ProductDescription>
</Desc>
</ProductModel>
</updg:after>
</updg:sync>
</ROOT>
Das Updategram bezieht sich auf das folgende kommentierte XSD-Schema (SampleSchema.xml).
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema"
xmlns="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription">
<xsd:element name="ProductModel" sql:relation="Production.ProductModel" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Name" type="xsd:string"></xsd:element>
<xsd:element name="Desc" sql:field="CatalogDescription" sql:datatype="xml">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ProductDescription">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Summary" type="xsd:anyType">
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="ProductModelID" sql:field="ProductModelID"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
So testen Sie das Updategramm
Kopieren Sie das obige Schema, und fügen Sie es in eine Textdatei ein. Speichern Sie die Datei als XSD-SampleSchema.xml.
Hinweis
Da Updategramme die Standardzuordnung unterstützen, gibt es keine Möglichkeit, den Anfang und das Ende des
xmlDatentyps zu identifizieren. Dies bedeutet effektiv, dass beim Einfügen oder Aktualisieren von Tabellen mitxmlDatentypspalten ein Zuordnungsschema erforderlich ist. Wenn kein Schema bereitgestellt wird, gibt SQLXML einen Fehler zurück, der angibt, dass eine der Spalten in der Tabelle fehlt.Kopieren Sie das oben gezeigte Updatediagramm, und fügen Sie es in eine Textdatei ein. Speichern Sie die Datei als SampleUpdategram.xml im selben Ordner, der zum Speichern SampleSchema.xmlverwendet wird.
Erstellen und verwenden Sie das SQLXML 4.0-Testskript (Sqlxml4test.vbs), um das Updategramm auszuführen.
Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.