Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Güncelleştirme birimi, bir kayıt örneği blokta göründüğünde <after> ekleme işlemini gösterir ancak ilgili <before> blokta gösterilmez. Bu durumda, güncelleştirme birimi bloğundaki <after> kaydı veritabanına ekler.
Bu, ekleme işleminin güncelleştirme birimi biçimidir:
<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>
<before> bloğu
Ekleme <before> işlemi için blok atlanabilir. İsteğe bağlı mapping-schema öznitelik belirtilmezse, <ElementName> güncelleştirme birimi içinde belirtilen veritabanı tablosuyla eşler ve alt öğeler veya öznitelikler tablodaki sütunlara eşler.
<after> bloğu
Blokta <after> bir veya daha fazla kayıt belirtebilirsiniz.
<after> Blok belirli bir sütun için bir değer sağlamazsa, güncelleştirme birimi ek açıklamalı şemada belirtilen varsayılan değeri kullanır (bir şema belirtildiyse). Şema sütun için varsayılan bir değer belirtmezse, güncelleştirme birimi bu sütuna herhangi bir açık değer belirtmez ve bunun yerine SQL Server varsayılan değerini (belirtilirse) bu sütuna atar. SQL Server varsayılan değeri yoksa ve sütun bir NULL değer kabul ederse, güncelleştirme birimi sütun değerini olarak NULLayarlar. Sütunda varsayılan değer yoksa veya bir NULL değer kabul ederse, komut başarısız olur ve güncelleştirme birimi bir hata döndürür. İsteğe bağlı updg:returnid özniteliği, -type sütunu olan bir tabloya kayıt eklendiğinde sistem tarafından oluşturulan kimlik değerini döndürmek IDENTITYiçin kullanılır.
updg:id özniteliği
Güncelleştirme birimi yalnızca kayıtları ekiyorsa, güncelleştirme birimi özniteliğini updg:id gerektirmez. hakkında updg:iddaha fazla bilgi için bkz . XML Güncelleştirme BirimleriNi Kullanarak Verileri Güncelleştirme (SQLXML 4.0).
updg:at-identity özniteliği
Bir güncelleştirme birimi -type sütunu olan IDENTITYbir tabloya kayıt eklediğinde, güncelleştirme birimi isteğe bağlı updg:at-identity özniteliğini kullanarak sistem tarafından atanan değeri yakalayabilir. Güncelleştirme birimi daha sonra bu değeri sonraki işlemlerde kullanabilir. Güncelleştirme biriminin yürütülmesinden sonra özniteliğini belirterek updg:returnid oluşturulan kimlik değerini döndürebilirsiniz.
updg:guid özniteliği
updg:guid özniteliği, genel olarak benzersiz bir tanımlayıcı oluşturan isteğe bağlı bir özniteliktir. Bu değer, belirtilen bloğun tamamı <sync> için kapsam içinde kalır. Bu değeri bloğun <sync> herhangi bir yerinde kullanabilirsiniz. özniteliği, benzersiz tanımlayıcıyı NEWGUID() oluşturmak için SQL Server işlevini çağırır.
Örnekler
Aşağıdaki örnekleri kullanarak çalışma örnekleri oluşturmak için, SQLXML Örneklerini Çalıştırma Gereksinimleri bölümünde belirtilen gereksinimleri karşılamanız gerekir.
Güncelleştirme birimi örneklerini kullanmadan önce şunları göz önünde bulundurun:
Örneklerin çoğu varsayılan eşlemeyi kullanır (yani güncelleştirme birimi içinde eşleme şeması belirtilmez). Eşleme şemalarını kullanan güncelleştirme birimlerinin diğer örnekleri için bkz. Güncelleştirme Birimi içinde Ek Açıklamalı Eşleme Şeması Belirtme (SQLXML 4.0).
Örneklerin çoğu örnek veritabanını kullanır
AdventureWorks2025. Tüm güncelleştirmeler bu veritabanındaki tablolara uygulanır.
A. Güncelleştirme birimi kullanarak kayıt ekleme
Öznitelik merkezli bu güncelleştirme birimi veritabanındaki tabloya HumanResources.EmployeeAdventureWorks2025 bir kayıt ekler.
Bu örnekte, güncelleştirme birimi bir eşleme şeması belirtmez. Bu nedenle, güncelleştirme birimi, öğe adının bir tablo adıyla eşlendiği ve özniteliklerin veya alt öğelerin bu tablodaki sütunlarla eşlendiği varsayılan eşlemeyi kullanır.
AdventureWorks2025 HumanResources.Department tablosunun şeması tüm sütunlara 'null değil' kısıtlaması uygular. Bu nedenle, güncelleştirme birimi tüm sütunlar için belirtilen değerleri içermelidir. DepartmentID bir IDENTITY-type sütunudur. Bu nedenle, bunun için hiçbir değer belirtilmez.
<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>
Şemada örnek bir XPath sorgusunu test etme
Önceki güncelleştirme kümesini kopyalayın ve bir metin dosyasına yapıştırın. Dosyayı
MyUpdategram.xmlolarak kaydedin.Şablonu yürütmek için SQLXML 4.0 Test Betiğini (
Sqlxml4test.vbs) oluşturun ve kullanın.Daha fazla bilgi için bkz. SQLXML 4.0 Sorguları Yürütmek için ADO Kullanma.
Öğe merkezli eşlemede güncelleştirme birimi şöyle görünür:
<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>
Karma modda (öğe merkezli ve öznitelik merkezli) bir güncelleştirme çizelgesinde, bir öğenin hem öznitelikleri hem de alt öğeleri olabilir ve bu güncelleştirme birimiyle gösterilmiştir:
<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. Güncelleştirme birimi kullanarak birden çok kayıt ekleme
Bu güncelleştirme birimi tabloya HumanResources.Shift iki yeni vardiya kaydı ekler. Güncelleştirme birimi isteğe bağlı <before> bloğu belirtmez.
<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>
Şemada örnek bir XPath sorgusunu test etme
Önceki güncelleştirme kümesini kopyalayın ve bir metin dosyasına yapıştırın. Dosyayı
Updategram-AddShifts.xmlolarak kaydedin.Şablonu yürütmek için SQLXML 4.0 Test Betiğini (
Sqlxml4test.vbs) oluşturun ve kullanın.Daha fazla bilgi için bkz. SQLXML 4.0 Sorguları Yürütmek için ADO Kullanma.
Bu örneğin başka bir sürümü, iki çalışanı eklemek için bir blok yerine iki ayrı <after> blok kullanan bir güncelleştirme birimidir. Bu geçerlidir ve aşağıdaki gibi kodlanabilir:
<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. XML'de geçerli olmayan geçerli SQL Server karakterleriyle çalışma
SQL Server'da tablo adları, Northwind veritabanındaki Sipariş Ayrıntıları tablosu gibi bir boşluk içerebilir. Ancak, bu geçerli SQL Server tanımlayıcıları olan XML karakterlerinde geçerli değildir, ancak geçerli XML tanımlayıcıları kodlama değeri olarak kullanılarak _xHHHH_ kodlanabilir; burada HHHH karakter için en önemli bit-ilk sırada dört basamaklı onaltılık UCS-2 kodu anlamına gelir.
Uyarı
Bu örnekte Northwind veritabanı kullanılır. Northwind veritabanını, bu Microsoft Web sitesinden indirilebilen bir SQL betiği kullanarak yükleyebilirsiniz.
Ayrıca, öğe adı köşeli ayraç ([ ]) içine alınmalıdır. [ve] karakterleri XML'de geçerli olmadığından, bunları sırasıyla ve _x005B_olarak _x005D_ kodlamanız gerekir. (Eşleme şeması kullanıyorsanız, boşluklar gibi geçerli olmayan karakterler içermeyen öğe adları sağlayabilirsiniz. Eşleme şeması gerekli eşlemeyi yapar; bu nedenle, bu karakterler için kodlamanız gerekmez).
Bu güncelleştirme birimi Northwind veritabanındaki Sipariş Ayrıntıları tablosuna bir kayıt ekler:
<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>
Sipariş Ayrıntıları tablosundaki UnitPrice sütunu para türündedir. Uygun tür dönüştürmesini uygulamak için ( bir dize türünden para türüne), dolar işareti karakteri ($) değerin bir parçası olarak eklenmelidir. Güncelleştirme birimi bir eşleme şeması belirtmezse, dize değerinin ilk karakteri değerlendirilir. İlk karakter dolar işareti ($) ise, uygun dönüştürme uygulanır.
Güncelleştirme birimi, sütunun uygun şekilde veya dt:type="fixed.14.4"olarak sql:datatype="money" işaretlendiği bir eşleme şemasında belirtilirse dolar işareti ($) gerekli değildir ve dönüştürme eşleme tarafından işlenir. Bu, uygun tür dönüştürmesinin gerçekleşmesini sağlamanın önerilen yoludur.
Şemada örnek bir XPath sorgusunu test etme
Önceki güncelleştirme kümesini kopyalayın ve bir metin dosyasına yapıştırın. Dosyayı
UpdategramSpacesInTableName.xmlolarak kaydedin.Şablonu yürütmek için SQLXML 4.0 Test Betiğini (
Sqlxml4test.vbs) oluşturun ve kullanın.Daha fazla bilgi için bkz. SQLXML 4.0 Sorguları Yürütmek için ADO Kullanma.
D. KIMLIK türü sütununa eklenen değeri almak için at-identity özniteliğini kullanın
Aşağıdaki güncelleştirme birimi iki kayıt ekler: biri tabloya Sales.SalesOrderHeader , diğeri tabloya Sales.SalesOrderDetail .
İlk olarak, güncelleştirme birimi tabloya Sales.SalesOrderHeader bir kayıt ekler. Bu tabloda SalesOrderID sütunu bir IDENTITY-type sütunudur. Bu nedenle, bu kaydı tabloya eklediğinizde, güncelleştirme birimi atanan SalesOrderID değerini "x" (yer tutucu değer) olarak yakalamak için özniteliğini kullanır at-identity . Updategram daha sonra bu at-identity değişkeni Sales.SalesOrderDetail< öğesindeki >SalesOrderID özniteliğinin değeri olarak belirtir.
<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>
özniteliği tarafından updg:at-identity oluşturulan kimlik değerini döndürmek istiyorsanız özniteliğini updg:returnid kullanabilirsiniz. Aşağıdaki örnek, bu kimlik değerini döndüren düzeltilmiş bir güncelleştirme birimidir. (Bu güncelleştirme birimi, örneği biraz daha karmaşık hale getirmek için iki sipariş kaydı ve iki sipariş ayrıntı kaydı ekler.)
<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>
Güncelleştirme birimi yürütürken, oluşturulan kimlik değerini (tablo kimliği için kullanılan ShiftID sütununun oluşturulan değeri) içeren aşağıdaki örneğe benzer sonuçlar döndürür:
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<returnid>
<x>4</x>
<y>5</y>
</returnid>
</ROOT>
Şemada örnek bir XPath sorgusunu test etme
Önceki güncelleştirme kümesini kopyalayın ve bir metin dosyasına yapıştırın. Dosyayı
Updategram-returnId.xmlolarak kaydedin.Şablonu yürütmek için SQLXML 4.0 Test Betiğini (
Sqlxml4test.vbs) oluşturun ve kullanın.Daha fazla bilgi için bkz. SQLXML 4.0 Sorguları Yürütmek için ADO Kullanma.
E.
updg:guid Benzersiz bir değer oluşturmak için özniteliğini kullanma
Bu örnekte, güncelleştirme birimi Cust ve CustOrder tablolarına bir kayıt ekler. Ayrıca, updategram özniteliğini kullanarak updg:guid CustomerID özniteliği için benzersiz bir değer oluşturur.
<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>
Updategram özniteliğini returnid belirtir. Sonuç olarak, oluşturulan GUID döndürülür:
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<returnid>
<x>7111BD1A-7F0B-4CEE-B411-260DADFEFA2A</x>
</returnid>
</ROOT>
Updategram'ı test edin
Önceki güncelleştirme kümesini kopyalayın ve bir metin dosyasına yapıştırın. Dosyayı
Updategram-GenerateGuid.xmlolarak kaydedin.Şu tabloları oluşturun:
USE tempdb; CREATE TABLE Cust ( CustID UNIQUEIDENTIFIER, LastName VARCHAR (20) ); CREATE TABLE CustOrder ( CustID UNIQUEIDENTIFIER, OrderID INT );Şablonu yürütmek için SQLXML 4.0 Test Betiğini (
Sqlxml4test.vbs) oluşturun ve kullanın.Daha fazla bilgi için bkz. SQLXML 4.0 Sorguları Yürütmek için ADO Kullanma.
F. Güncelleştirme birimi içinde şema belirtme
Bu örnekteki güncelleştirme birimi aşağıdaki tabloya bir kayıt ekler:
CustOrder(OrderID, EmployeeID, OrderType)
Bu güncelleştirme birimi içinde bir XSD şeması belirtilir (yani, güncelleştirme birimi öğelerinin ve özniteliklerinin varsayılan eşlemesi yoktur). Şema, öğelerin ve özniteliklerin veritabanı tablo ve sütunlarıyla gerekli eşlemesini sağlar.
Aşağıdaki şema (CustOrderSchema.xml) ve <CustOrder> özniteliklerinden oluşan bir OrderID öğeyi EmployeeID açıklar. Şemayı daha ilginç hale getirmek için, özniteliğine EmployeeID varsayılan bir değer atanır. Bir güncelleştirme birimi, özniteliğin varsayılan değerini yalnızca ekleme işlemleri için kullanır ve yalnızca güncelleştirme birimi bu özniteliği belirtmezse kullanır.
<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>
Bu güncelleştirme birimi CustOrder tablosuna bir kayıt ekler. Güncelleştirme birimi yalnızca OrderID ve EmployeeID öznitelik değerlerini belirtir. OrderType öznitelik değerini belirtmez. Bu nedenle, güncelleştirme birimi önceki şemada belirtilen EmployeeID özniteliğinin varsayılan değerini kullanır.
<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>
Eşleme şemasını belirten güncelleştirme birimlerinin diğer örnekleri için bkz. Güncelleştirme Birimi içinde Ek Açıklamalı Eşleme Şeması Belirtme (SQLXML 4.0).
Updategram'ı test edin
Bu tabloyu
tempdbveritabanında oluşturun:USE tempdb; CREATE TABLE CustOrder ( OrderID INT, EmployeeID INT, OrderType INT );Önceki şemayı kopyalayın ve bir metin dosyasına yapıştırın. Dosyayı
CustOrderSchema.xmlolarak kaydedin.Önceki güncelleştirme kümesini kopyalayın ve bir metin dosyasına yapıştırın. Dosyayı önceki adımda kullanılan klasöre kaydedin
CustOrderUpdategram.xml.Güncelleştirme birimi yürütmek için SQLXML 4.0 Test Betiğini (
Sqlxml4test.vbs) oluşturun ve kullanın.Daha fazla bilgi için bkz. SQLXML 4.0 Sorguları Yürütmek için ADO Kullanma.
Bu eşdeğer XDR şemasıdır:
<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. Sütuna null değerler eklemek için xsi:nil özniteliğini kullanma
Tablodaki karşılık gelen sütuna null değer eklemek istiyorsanız, özniteliğini güncelleştirme birimindeki xsi:nil bir öğede belirtebilirsiniz. İlgili XSD şemasında, XSD nillable özniteliği de belirtilmelidir.
Örneğin, şu XSD şemasını göz önünde bulundurun:
<?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>
XSD şeması öğesi için nillable="true" belirtir<fname>. Aşağıdaki güncelleştirme birimi bu şemayı kullanır:
<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>
Güncelleştirme birimi, bloktaki xsi:nil<fname> öğe için belirtir<after>. Bu nedenle, bu güncelleştirme birimi yürütülürken, tablosundaki first_name sütunu için değeri NULL eklenir.
Updategram'ı test edin
Veritabanında aşağıdaki tabloyu
tempdboluşturun: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 ); GOÖnceki şemayı kopyalayın ve bir metin dosyasına yapıştırın. Dosyayı
StudentSchema.xmlolarak kaydedin.Önceki güncelleştirme kümesini kopyalayın ve bir metin dosyasına yapıştırın. Dosyayı, kaydetmek için önceki adımda kullanılan klasördeki gibi
StudentUpdategram.xmlkaydedinStudentSchema.xml.Güncelleştirme birimi yürütmek için SQLXML 4.0 Test Betiğini (
Sqlxml4test.vbs) oluşturun ve kullanın.Daha fazla bilgi için bkz. SQLXML 4.0 Sorguları Yürütmek için ADO Kullanma.
H. Bir güncelleştirme birimindeki ad alanlarını belirtme
Bir güncelleştirme birimi içinde, güncelleştirme birimindeki aynı öğede bildirilen bir ad alanına ait öğeleriniz olabilir. Bu durumda, ilgili şema aynı ad alanını da bildirmeli ve öğenin bu hedef ad alanına ait olması gerekir.
Örneğin, aşağıdaki güncelleştirme birimiUpdateGram-ElementHavingNamespace.xml<Order> () öğesi öğesinde bildirilen bir ad alanına aittir.
<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>
Bu durumda, şemanın bu şemada gösterildiği gibi ad alanını da bildirmesi gerekir:
Aşağıdaki şemada (XSD-ElementHavingNamespace.xml), ilgili öğenin ve özniteliklerin nasıl bildirilmesi gerektiği gösterilmektedir.
<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>
Updategram'ı test edin
Önceki şemayı kopyalayın ve bir metin dosyasına yapıştırın. Dosyayı
XSD-ElementHavingNamespace.xmlolarak kaydedin.Önceki güncelleştirme kümesini kopyalayın ve bir metin dosyasına yapıştırın. Dosyayı kaydetmek için kullanılan klasördeki gibi
Updategram-ElementHavingNamespace.xmlkaydedinXSD-ElementHavingnamespace.xml.Güncelleştirme birimi yürütmek için SQLXML 4.0 Test Betiğini (
Sqlxml4test.vbs) oluşturun ve kullanın.Daha fazla bilgi için bkz. SQLXML 4.0 Sorguları Yürütmek için ADO Kullanma.
I. XML veri türü sütununa veri ekleme
Xml veri türü sütunlarında depolanan verileri eklemek ve güncelleştirmek için güncelleştirme birimlerini aşağıdaki noktaları dikkate alarak kullanabilirsiniz:
Xml sütunu, var olan bir satırı tanımlamak için kullanılamaz. Bu nedenle, bir güncelleştirme biriminin
updg:beforebölümüne eklenemez.Xml sütununa eklenen XML parçası kapsamındaki ad alanları korunur ve ad alanı bildirimleri eklenen parçanın en üst öğesine eklenir.
Örneğin, aşağıdaki güncelleştirme birimiSampleUpdateGram.xml<Desc> () öğesi, örnek veritabanındaki Production>productModel tablosundaki ProductDescription sütununu AdventureWorks2025 güncelleştirir. Bu güncelleştirme biriminin sonucu, ProductDescription sütununun XML içeriğinin öğesinin XML içeriğiyle güncelleştirilmesidir <Desc> .
<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 href="ProductDescription.xsl" type="text/xsl" e="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; aluminum 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>Aluminum 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>
Güncelleştirme birimi aşağıdaki açıklamalı XSD şemasına (SampleSchema.xml ) başvurur.
<?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="http://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>
Updategram'ı test edin
Önceki şemayı kopyalayın ve bir metin dosyasına yapıştırın. Dosyayı
XSD-SampleSchema.xmlolarak kaydedin.Uyarı
Güncelleştirme birimleri varsayılan eşlemeyi desteklediğinden , xml veri türünün başlangıcını ve sonunu tanımlamanın hiçbir yolu yoktur. Bu, xml veri türü sütunlarıyla tablo eklerken veya güncelleştirirken eşleme şemasının gerekli olduğu anlamına gelir. Şema sağlanmadığında, SQLXML tabloda sütunlardan birinin eksik olduğunu belirten bir hata döndürür.
Önceki güncelleştirme kümesini kopyalayın ve bir metin dosyasına yapıştırın. Dosyayı kaydetmek için kullanılan klasördeki gibi
SampleUpdategram.xmlkaydedinSampleSchema.xml.Güncelleştirme birimi yürütmek için SQLXML 4.0 Test Betiğini (
Sqlxml4test.vbs) oluşturun ve kullanın.Daha fazla bilgi için bkz. SQLXML 4.0 Sorguları Yürütmek için ADO Kullanma.