Wprowadzenie do Updategrams (SQLXML 4.0)
You can modify (insert, update, or delete) a database in Microsoft SQL Server from an existing XML document by using an updategram or the OPENXML Transact-SQL function.
Funkcja OPENXML modyfikuje bazę rozdrabniania istniejącego dokumentu XML i podając zestawu zestaw wierszy, INSERT, UPDATE, mogą być przekazywane lub Instrukcja DELETE.Z OPENXML wykonywane są operacje bezpośrednio przeciwko tabel bazy danych.Dlatego OPENXML jest najbardziej odpowiednia gdziekolwiek dostawców zestawu zestaw wierszy, takich jak tabela, mogą być wyświetlane jako źródło.
Podobnie jak OPENXML wierzchołki umożliwia wstawianie, aktualizowanie lub usuwanie danych w bazie danych; wierzchołki działa jednak przeciwko widoki XML adnotacjami XSD (lub XDR) schematu; na przykład aktualizacje są stosowane do widoku XML oferowanego przez mapowanie schematu.Schemat mapowania z kolei ma niezbędne informacje mapowania XML, elementy i atrybuty do odpowiednich tabel bazy danych i kolumny.Wierzchołki używa informacje o mapowaniu do aktualizacji bazy danych, tabel i kolumn.
Ostrzeżenie
Dokumentacja ta zakłada, że czytelnik jest obeznany z szablonów i mapowanie obsługa schematów w SQL Server.Aby uzyskać więcej informacji, zobacz Wprowadzenie do adnotacjami schematów XSD (SQLXML 4.0).W przypadku starszych aplikacji, które używają XDR, zobacz Adnotacjami schematy XDR (zaniechane w SQLXML 4.0).
Wymagane obszary nazw w diagramach aktualizacji
Słowa kluczowe w diagramach aktualizacji, takich jak <sync>, <before>, i <after>, istnieje w urn:schemas-microsoft-com:xml-updategram obszaru nazw.Prefiks obszaru nazw, który używany jest dowolny.W tej dokumentacji updg oznacza prefiks updategram obszaru nazw.
Recenzowanie składni
Wierzchołki jest szablon z <sync>, <before>, i <after> bloków, które tworzą składnia wierzchołki.Poniższy kod ilustruje tej składni w najprostszej postaci:
<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>
Poniższe definicje opisują roli każdego z tych bloków:
<before>
Określa istniejący stan (nazywane także "przed Państwo") rekordu wystąpienie.<after>
Identyfikuje nowe Państwo, do którego ma zostać zmienione dane.<sync>
Zawiera <before> i <after> bloków.A <sync> blok może zawierać więcej niż jeden zestaw <before> i <after> bloków.Jeśli istnieje więcej niż jeden zestaw <before> i <after> bloków, tych bloków (nawet jeśli są puste) musi być określona jako pary.Ponadto wierzchołki może mieć więcej niż jeden <sync> blok.Każdy <sync> Blok jest jedna jednostka transakcji (co oznacza, że albo wszystko w <sync> Blok jest wykonywane lub nie uczyniono nic).Jeżeli podano wiele <sync> bloków w diagramach aktualizacji, uszkodzenie jednej <sync> blok nie narusza innych <sync> bloków.
Czy wierzchołki usuwa, wstawia lub aktualizuje wystąpienie rekordów zależy od zawartości <before> i <after> bloki:
Jeśli wystąpienie rekordu jest wyświetlany tylko w <before> blok żadne odpowiednie wystąpienie w <after> blok wierzchołki wykonuje operacji usunięcia.
Jeśli wystąpienie rekordu jest wyświetlany tylko w <after> blok żadne odpowiednie wystąpienie w <before> blok, jest operacji wstawiania.
Jeśli pojawi się wystąpienie rekordu <before> zablokować i ma odpowiednie wystąpienie w <after> blok, jest operacji aktualizacji.W takim przypadek wierzchołki aktualizuje rekord wystąpienie wartości, które są określone w <after> blok.
Określanie schematu mapowanie w diagramach aktualizacji
W diagramach aktualizacji, pozyskiwania XML dostarczonego przez mapowanie schematu (obsługiwane są schematy XSD i XDR) może być bezpośrednia lub pośrednia (czyli wierzchołki można pracować z lub bez schematu określonego mapowania).Jeśli nie określisz schematu mapowanie, wierzchołki zakłada niejawny mapowanie (Mapowanie domyślne), gdzie każdy element w <before> blok lub <after> blok mapuje do tabela i każdy element podrzędność elementu lub mapowań atrybut do kolumna w bazie danych.Jeśli jawnie określić mapowanie schematu, elementy i atrybuty w wierzchołki muszą odpowiadać elementy i atrybuty w schemacie mapowania.
Mapowanie niejawna (domyślnie)
W większości przypadków wierzchołki, który wykonuje proste aktualizacje mogą nie wymagać schematu mapowania.W takim przypadek wierzchołki korzysta z domyślnego schematu mapowania.
Następujące wierzchołki demonstruje niejawny mapowanie.W tym przykładzie wierzchołki wstawia nowego nabywcy w tabela Sales.Customer.Ponieważ ta wierzchołki używa niejawny mapowanie, <Sales.Customer> element mapowany do tabela Sales.Customer i map atrybutów IDKlienta i SalesPersonID odpowiednich kolumn w tabela Sales.Customer.
<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>
Jawnego mapowania
Jeżeli określono mapowania schematu (XSD lub XDR) wierzchołki używa schematu do określenia bazy danych, tabel i kolumn, które mają być aktualizowane.
Wierzchołki wykonuje złożonych aktualizacji (na przykład Wstawianie rekordów w wielu tabelach z relacji nadrzędny podrzędność, która jest określona w schemacie mapowanie), należy wyraźnie podać mapowanie schematu za pomocą mapping-schema atrybut, przeciwko której wykonuje się wierzchołki.
Ponieważ wierzchołki szablonu, ścieżka określona dla mapowania schematu w diagramach aktualizacji jest względem lokalizacji pliku szablonu (w stosunku do przechowywania wierzchołki).Aby uzyskać więcej informacji, zobacz Określanie adnotacjami schematu mapowanie w diagramach aktualizacji (SQLXML 4.0).
Zorientowany na element i atrybut zorientowany mapowania w Updategrams
Domyślne mapowania (Jeśli nie określono mapowania schematu w diagramach aktualizacji), mapa wierzchołki elementów tabel i elementy podrzędność (z wyjątkiem zorientowany na element mapowanie) i mapy atrybuty (przypadek mapowania zorientowany atrybut) do kolumn.
Zorientowany na element Mapowanie
Zorientowany na element wierzchołki element zawiera elementy podrzędność, które wyznaczają właściwości elementu.Na przykład zajrzyj do następujących wierzchołki.<Person.Person> zawiera element **<Imię>**i <nazwisko> elementów podrzędność.Te elementy podrzędność są właściwościami <Person.Person> elementu.
Ponieważ ta wierzchołki nie określono schematu mapowanie, wierzchołki używa niejawny mapowanie, gdzie <Person.Person> element mapowany do tabela Person.Person i jego podrzędność elementów mapować kolumn Imię i nazwisko.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync >
<updg:after>
<Person.Person>
<FirstName>Catherine</FirstName>
<LastName>Abel</LastName>
</Person.Person>
</updg:after>
</updg:sync>
</ROOT>
Mapowanie zorientowany atrybutu
Zorientowany atrybut mapowania elementów mają atrybuty.Następujące wierzchołki wykorzystuje mapowanie zorientowany atrybut.W tym przykładzie <Person.Person> element składa się z Imię i nazwisko atrybuty.Te atrybuty są właściwości <Person.Person> elementu.Jak w poprzednim przykładzie wierzchołki to określa Brak schematu mapowanie tak opiera się na niejawny mapowanie mapować <Person.Person> element tabela Person.Person i atrybuty elementu do odpowiednich kolumn w tabela.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync >
<updg:before>
</updg:before>
<updg:after>
<Person.Person FirstName="Catherine" LastName="Abel" />
</updg:after>
</updg:sync>
</ROOT>
Obie zorientowany na Element i zorientowany atrybutu mapowania
Wymieszać mapowania zorientowany na element i zorientowany atrybut można określić, jak pokazano w następującym wierzchołki.Należy zauważyć, że <Person.Person> element zawiera zarówno atrybutu i podrzędność elementu.Ponadto wierzchołki to opiera się na niejawny mapowanie.W ten sposób Imię atrybut i <nazwisko> mapy element podrzędność odpowiednich kolumn w tabela Person.Person.
<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">
<updg:sync >
<updg:before>
</updg:before>
<updg:after>
<Person.Person FirstName="Catherine" >
<LastName>Abel</LastName>
</Person.Person>
</updg:after>
</updg:sync>
</ROOT>
Praca ze znakami prawidłowy w programie SQL Server, ale nie jest prawidłowa w XML
W SQL Server, mogą zawierać nazwy tabela obszar.Jednak ten typ Nazwa tabela jest nieprawidłowa w formacie XML.
Do kodowania znaków, które są prawidłowe SQL Server identyfikatory ale są nieprawidłowe identyfikatorów XML, użyj "xHHHH" jako wartość kodowania, gdzie GG oznacza czterocyfrowy UCS-2 kodu szesnastkowego znaku w najbardziej znaczący bit pierwszego zamówienia.Korzystając z tego schematu kodowania, znak spacji pobiera zastąpione 0020 x (czterocyfrowego kodu szesnastkowego znaku spacji); Dlatego, nazwa tabela [Szczegóły zamówień] w SQL Server staje się x005B_Order_x0020_Details_x005D XML.
Podobnie, trzeba określić nazwy elementu trzy części, takie jak <[bazy danych]. [właściciel].[tabela]>.Ponieważ znaki nawiasu ([i]) są nieprawidłowe w formacie XML, należy określić go jako <x005B_database_x005D.x005B_owner_x005D.x005B_table_x005D>, gdzie x005B jest kodowanie lewy nawias kwadratowy ([]), a x005D jest kodowanie prawy nawias kwadratowy (]).
Wykonywanie Updategrams
Ponieważ wierzchołki szablonu, wszystkie mechanizmy przetwarzania szablonu dotyczą wierzchołki.SQLXML 4.0 można wykonać wierzchołki na następujące sposoby:
Przesyłając go w poleceniu ADO.
Przesyłając go jak polecenie OLE DB.