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ı
Microsoft SQL Server'daki bir veritabanını bir güncelleştirme birimi veya OPENXML Transact-SQL işlevi kullanarak var olan bir XML belgesinden değiştirebilir (ekleyebilir, güncelleştirebilir veya silebilirsiniz).
OPENXML fonksiyonu, mevcut XML belgesini parçalayarak veritabanını değiştirir ve INSERT, UPDATE veya DELETE ifadesine iletilebilen bir satır kümesi sağlar. OPENXML ile işlemler doğrudan veritabanı tablolarına karşı gerçekleştirilir. Bu nedenle, OPENXML en uygun, bir tablo gibi satır kümesi sağlayıcılarının kaynak olarak görünebileceği yerlerde geçerlidir.
OPENXML gibi, updategram veritabanına veri ekleme, güncelleme veya silme imkanı verir; ancak bir updategram, annotasyonlu XSD (veya bir XDR) şeması tarafından sağlanan XML görünümlerine karşı çalışır; örneğin, güncellemeler eşleme şeması tarafından sağlanan XML görünümüne uygulanır. Eşleme şeması ise, XML öğeleri ve özniteliklerini ilgili veritabanı tabloları ve sütunlarına eşlemek için gerekli bilgiye sahiptir. Updategram, bu eşleme bilgisini veritabanı tablolarını ve sütunlarını güncellemek için kullanır.
Uyarı
Bu dokümantasyon, SQL Server'da şablonlar ve eşleme şema desteğine aşina olduğunuzu varsayıyor. Daha fazla bilgi için bkz. Açıklamalı XSD Şemalarına Giriş (SQLXML 4.0). XDR kullanan eski uygulamalar için bkz. Annotated XDR Schemas (SQLXML 4.0'da kullanımdan kaldırılmıştır).
Güncelleme Gramında Gerekli İsim Alanları
Bir updategram'daki anahtar kelimeler, örneğin <sync>, <before> ve <after>, urn:schemas-microsoft-com:xml-updategram isim alanında bulunur. Kullandığınız namespace öneki keyfidir. Bu dokümantasyonda, updg öneki updategram isim alanını gösterir.
Sözdizimi İnceleme
Updategram, updategram'ın sözdizimi oluşturan senkronizasyon>, öncesi ve sonrası bloklarına sahip bir şablondur<.<><> Aşağıdaki kod bu sözdizimi en basit haliyle gösterir:
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync [mapping-schema= "AnnotatedSchemaFile.xml"] >
<updg:before>
...
</updg:before>
<updg:after>
...
</updg:after>
</updg:sync>
</ROOT>
Aşağıdaki tanımlar bu blokların her birinin rolünü açıklar:
<önce>
Kayıt örneğinin mevcut durumunu ("önceki durum" olarak da adlandırılır) tanımlar.
<sonra>
Verilerin değiştirileceği yeni durumu belirler.
<Eşitleme>
Öncesi> ve sonrası bloklarını içerir<.>< Bir <senkronizasyon> bloğu, birden fazla öncesi> ve sonrası blok seti< içerebilir.>< Birden fazla <önceden> ve <sonra> blokları varsa, bu bloklar (boş olsalar bile) çiftler olarak belirtilmelidir. Ayrıca, bir updategram'da birden <fazla senkronizasyon> bloğu olabilir. Her <senkronizasyon> bloğu bir işlem birimidir (yani senkronizasyon> blokundaki her şey< tamamlanır ya da hiçbir şey yapılmaz). Bir updategram'da birden fazla <senkronizasyon> bloğu belirtirseniz, bir <senkronizasyon> bloğunun başarısızlığı diğer <senkronizasyon> bloklarını etkilemez.
Bir updategram'ın bir kayıt örneğini silmesi, ekleyip eklemesi veya güncellemesi, öncesi> ve sonrası bloklarının< içeriğine bağlıdır:><
Bir kayıt örneği yalnızca <before> bloğunda görünürse ve after> blokunda karşılık gelen bir örnek< yoksa, updategram silme işlemi gerçekleştirir.
Bir kayıt örneği yalnızca <after> blokunda görünürse ve önceki> blokta karşılık gelen bir örnek< yoksa, bu bir insert işlemidir.
Bir kayıt örneği before> bloğunda< görünürse ve after> blokunda< karşılık gelen bir örnek varsa, bu bir güncelleme işlemidir. Bu durumda, updategram kayıt örneğini after> blokunda belirtilen< değerlere günceller.
Güncelleme Gramında Bir Eşleme Şeması Belirtmek
Bir updategramda, bir eşleme şeması tarafından sağlanan XML soyutlama (hem XSD hem de XDR şemaları desteklenir) örtük veya açık olabilir (yani, bir updategram belirli bir eşleme şeması ile veya olmadan çalışabilir). Bir eşleme şeması belirtmiyorsanız, updategram örtük bir eşleme (varsayılan eşleme) varsayar; burada bloktan önce> veya sonra bloktaki her eleman< bir tabloya eşlenir ve her elemanın alt öğesi veya özniteliği veritabanındaki bir sütuna eşlenir.>< Eğer bir eşleme şemasını açıkça belirtirseniz, updategram'daki öğeler ve nitelikler eşleme şemasındaki öğeler ve niteliklerle eşleşmelidir.
İmplicit (varsayılan) Eşleme
Çoğu durumda, basit güncellemeler yapan bir updategram bir eşleme şeması gerektirmeyebilir. Bu durumda, updategram varsayılan eşleme şemasına dayanır.
Aşağıdaki güncelleme gramı örtük eşlemeyi göstermektedir. Bu örnekte, updategram Sales.Customer tablosuna yeni bir müşteri ekler. Bu güncelleme gramı örtük eşleme kullandığı için, <Sales.Customer> öğesi Sales.Customer tablosuna, CustomerID ve SalesPersonID öznitelikleri ise Sales.Customer tablosundaki ilgili sütunlara eşlenir.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync >
<updg:before>
</updg:before>
<updg:after>
<Sales.Customer CustomerID="1" SalesPersonID="277" />
</updg:after>
</updg:sync>
</ROOT>
Açık Eşleme
Bir eşleme şeması (XSD veya XDR) belirtirseniz, updategram güncellenecek veritabanı tablolarını ve sütunlarını belirlemek için şemayı kullanır.
Eğer updategram karmaşık bir güncelleme gerçekleştiriyorsa (örneğin, eşleme şemasında belirtilen ebeveyn-çocuk ilişkisine dayalı olarak birden fazla tabloya kayıt eklemek gibi), updategram'ın çalıştırdığı mapping-schema özetniteliğini kullanarak eşleme şemasını açıkça sağlamalısınız.
Bir updategram bir şablon olduğundan, updategram'da haritalama şeması için belirtilen yol, şablon dosyasının konumuna (updategram'ın saklandığı yere göre) görecelidir. Daha fazla bilgi için, Güncelleme Gramında Açıklamalı Eşleme Şemasını Belirtmek (SQLXML 4.0) bölümüne bakınız.
Updategram'larda Eleman Merkezli ve Özellik Merkezli Eşleme
Varsayılan eşlemede (güncelleme şeması belirtilmediğinde), updategram öğeleri tablolara eşlenir ve alt öğeler (eleman merkezli eşlemede) ve öznitelikler (özellik merkezli eşlemede) sütunlara eşlenir.
Eleman merkezli Eşleme
Eleman merkezli updategramda, bir eleman elemanın özelliklerini belirten alt elemanlar içerir. Örneğin, aşağıdaki updategram'a bakınız. Kişi.İletişim> öğesi,<Birinci Adı> ve Soyadadı alt öğelerini içerir<.>< Bu alt elemanlar Person.Contact> öğesinin özellikleridir<.
Bu updategram bir eşleme şeması belirtmediği için, updategram örtük eşleme kullanır; <burada Person.Contact> öğesi Person.Contact tablosuna, alt öğeleri ise FirstName ve Soyadı sütunlarına eşlenir.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync >
<updg:after>
<Person.Contact>
<FirstName>Catherine</FirstName>
<LastName>Abel</LastName>
</Person.Contact>
</updg:after>
</updg:sync>
</ROOT>
Özellik Merkezli Eşleme
Özellik merkezli bir eşlemede, elemanların öznitelikleri vardır. Aşağıdaki güncelleme gramı öznitelik merkezli eşlemeyi kullanır. Bu örnekte, <Kişi.İletişim> öğesi İlk Adı ve Soyadadı özelliklerinden oluşur. Bu nitelikler, Person.Contact> öğesinin özellikleridir<. Önceki örnekte olduğu gibi, bu updategram bir eşleme şeması belirtmez, bu nedenle Person.Contact> öğesini Person.Contact tablosuna, elemanın özniteliklerini ise tablodaki ilgili sütunlara eşlemek için örtük eşlemeye< dayanır.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync >
<updg:before>
</updg:before>
<updg:after>
<Person.Contact FirstName="Catherine" LastName="Abel" />
</updg:after>
</updg:sync>
</ROOT>
Hem Eleman Merkezli hem Özellik Merkezli Eşleme Kullanımı
Aşağıdaki updategram'da gösterildiği gibi, eleman merkezli ve öznitelik merkezli eşlemenin bir karışımını belirtebilirsiniz. Person.Contact> öğesinin< hem bir öznitelik hem de bir çocuk öğe içerdiğini fark edin. Ayrıca, bu güncelleme gramı örtük eşlemeye dayanır. Böylece, FirstName ve <LastName> alt öğesi, Person.Contact tablosunda karşılık gelen sütunlara eşlenir.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync >
<updg:before>
</updg:before>
<updg:after>
<Person.Contact FirstName="Catherine" >
<LastName>Abel</LastName>
</Person.Contact>
</updg:after>
</updg:sync>
</ROOT>
SQL Server'da geçerli ama XML'de geçerli olmayan karakterlerle çalışmak
SQL Server'da tablo adları bir boşluk içerebilir. Ancak, bu tür tablo adı XML'de geçerli değildir.
Geçerli SQL Server tanımlayıcıları olan ancak geçerli XML tanımlayıcı olmayan karakterleri kodlamak için, kodlama değeri olarak '__xHHHH__' kullanın; burada HHHH, karakterin en önemli bit-birinci sırasındaki dört haneli onaltılık UCS-2 kodu anlamına gelir. Bu kodlama şeması kullanılarak, bir boşluk karakteri x0020 (uzay karakteri için dört haneli onaltılık kod) ile değiştirilir; böylece SQL Server'daki tablo adı [Order Details] XML'de _x005B_Order_x0020_Details_x005D_ olur.
Benzer şekilde, [veritabanı] gibi üç parçalı eleman isimlerini <belirtmeniz gerekebilir. sahibi]. [masa]>. Parantez karakterleri ([ ve ]) XML'de geçerli olmadığından, bunu <_x005B_database_x005D_._x005B_owner_x005D_._x005B_table_x005D_> olarak belirtmelisiniz; burada _x005B_ sol parantez için kodlama ([) ve _x005D_ sağ parantez (]) için kodlamadır.
Güncelleme Gramları Çalıştırma
Bir updategram bir şablon olduğundan, bir şablonun tüm işleme mekanizmaları updategram'a uygulanır. SQLXML 4.0 için, updategram'ı aşağıdaki yöntemlerden biriyle çalıştırabilirsiniz:
Bunu bir ADO komutuyla göndererek.
Bunu OLE DB komutu olarak göndererek.