Udostępnij za pośrednictwem


Typed XML Compared to Untyped XML

Można utworzyć zmiennych i parametrów kolumn xml Typ. Opcjonalnie można skojarzyć kolekcja schematów XML z zmienna, parametr lub kolumnie xml Typ. W takim przypadek xml nazywany jest wystąpienie typu danych wpisany.W przeciwnym razie XML wystąpienie nosi nazwę bez typu.

Poprawnie sformułowany kod XML i typ danych xml

The xml data type implements the ISO standard xml data type.W związku z tym może go przechowywać poprawnie sformułowany kod XML w wersja 1.0 dokumentów i również tak zwane fragmenty zawartości XML z węzłami tekstu i dowolnej liczby elementów najwyższego poziom w kolumna bez typu XML.System sprawdza, czy dane jest dobrze sformułowany, nie jest wymagane kolumna powiązać ze schematów XML i odrzuca dane, które nie są poprawnie sformułowany dokument w tym sensie, rozszerzone.Ta zasada obowiązuje również z bez typu XML zmiennych i parametrów.

Schematy XML

Schemat XML zapewnia następujące funkcje:

  • Sprawdzanie poprawności ograniczenia. Za każdym razem, gdy przypisane lub modyfikacji instancji wpisywanych xml programu SQL Server sprawdza poprawność wystąpienie.

  • Typ danych informacji. Schematy dostarczają informacji na temat typów atrybuty i elementy xml wystąpienie typu danych. Informacje o typie zapewnia dokładniejsze semantyka operacyjnych do wartości zawarte w kolejności nie jest możliwe w przypadku bez typu xml. Na przykład dziesiętną operacji arytmetycznych można przeprowadzić na wartości dziesiętne, ale nie na ciąg znaków.W związku z tym wpisywany magazynu XML może się odbywać znacznie bardziej zwarty, niż XML bez typu.

Wybieranie określonego lub bez typu XML

Użycie untyped xml Typ danych w następujących sytuacjach:

  • Nie masz schemat danych XML.

  • Masz schematów, ale nie chcesz, aby sprawdzić poprawność danych na serwerze.Czasami jest przypadek, gdy aplikacja wykonuje sprawdzanie poprawności po stronie klient przed przechowywanie danych na serwerze lub tymczasowo przechowuje dane XML, który jest nieprawidłowy, zgodnie ze schematem lub używa składników schematu, które nie są obsługiwane na serwerze.

Użycie wpisany xml Typ danych w następujących sytuacjach:

  • Masz schematów dla danych XML i chcesz, aby serwer do sprawdzania poprawności danych XML, zgodnie ze schematów XML.

  • Należy korzystać z magazynu i optymalizacje na podstawie typu informacji.

  • Chcesz lepiej wykorzystać informacji o typie podczas kompilowania kwerend.

Wpisane XML kolumny, parametry i zmienne mogą być przechowywane dokumenty XML lub zawartości.Niemniej jednak należy określić przy użyciu flagi, czy użytkownik jest przechowywanie dokumentu lub zawartości w momencie deklaracja.Ponadto musisz podać kolekcja schematów XML.Umożliwia określenie dokumentu, jeśli każde wystąpienie XML ma dokładnie jeden element najwyższego poziom.W przeciwnym razie użyj zawartości.Kompilator kwerendy używa flagi dokument w sprawdzaniu typu podczas kompilacji kwerendy do wywnioskować pojedynczych elementów najwyższego poziom.

Tworzenie określonego XML

Aby można było utworzyć maszynowy xml Zmienne parametrów lub kolumn, należy najpierw zarejestrować kolekcja schematu XML przy użyciu CREATE kolekcja SCHEMATU XML (języka Transact-SQL). kolekcja schematu XML można następnie skojarzyć ze zmiennych i parametrów kolumn xml Typ danych.

W poniższych przykładach konwencja nazewnictwa dwóch części służy do określania nazwy kolekcja schematu XML.Pierwsza część to AdventureWorks nazwy schematu, a druga część jest nazwa schematu XML.

Przykład: Kojarzenie kolekcja schematu z xml typ zmiennej

The following example creates anxml type variable and associates a schema collection with it.Kolekcja schemat określony w tym przykładzie jest już zaimportowane w AdventureWorks bazy danych.

DECLARE @x xml (Production.ProductDescriptionSchemaCollection) 

Przykład: Określanie schematu xml kolumna Typ

Poniższy przykład tworzy tabela z xml Wpisz kolumna i określa schematu dla tej kolumna:

CREATE TABLE T1(
 Col1 int, 
 Col2 xml (Production.ProductDescriptionSchemaCollection)) 

Przykład: Przekazanie parametr typu xml do procedura przechowywana

W poniższym przykładzie przekazuje xml Wpisz parametr do procedura przechowywana i określa schematu dla zmiennej:

CREATE PROCEDURE SampleProc 
  @ProdDescription xml (Production.ProductDescriptionSchemaCollection) 
AS 

Należy uwzględnić następujące informacje dotyczące kolekcja schematu XML:

  • kolekcja schematu XML jest dostępna tylko w bazie danych, w którym został zarejestrowany przy użyciu Tworzenie kolekcja schematów XML.

  • Jeśli można rzutować z ciąg maszynowy xml Typ danych, wykonuje analizę również sprawdzania poprawności i wpisywania tekstu, opartego na obszarach nazw schematu XML w określonej kolekcja.

  • Mogą być rzutowane z maszynowy xml Typ danych, który bez typu xml Typ danych i na odwrót.

Aby uzyskać więcej informacji na temat innych sposobów generowania XML w programie SQL Server zobacz Generowanie wystąpienia XML. Po wygenerowaniu XML, można ją przypisać do xml Typ danych zmiennej lub przechowywane w xml Wpisz kolumn do dodatkowego przetwarzania.

W hierarchii typów danych xml Typ danych pojawia się poniżej sql_variant i typów zdefiniowanych przez użytkownika, ale nad jednym z wbudowanych typów.

Przykład: Określanie aspekty do Zachowaj Typed danych xml kolumna

Aby wpisać xml kolumna, możesz ograniczyć kolumna, aby zezwolić tylko pojedyncze elementy najwyższego poziom dla każdego wystąpienie przechowywanych w nim. Aby to zrobić, określając opcjonalny DOCUMENT zestaw reguł podczas tworzenia tabela, jak pokazano w poniższym przykładzie:

CREATE TABLE T(Col1 xml 
   (DOCUMENT Production.ProductDescriptionSchemaCollection))
GO
DROP TABLE T
GO

Domyślnie wystąpienia przechowywane w maszynowy xml kolumna są przechowywane jako zawartość XML, a nie jako dokumentów XML. Dzięki temu dla następujących elementów:

  • Zero lub wiele elementów najwyższego poziom

  • Węzły tekstu w elementach najwyższego poziom

Można także jawnie określić ten problem przez dodanie CONTENT Faseta, jak pokazano w poniższym przykładzie:

CREATE TABLE T(Col1 xml(CONTENT Production.ProductDescriptionSchemaCollection))
GO -- Default

Należy zauważyć, że można określić opcjonalne aspekty dokumentu/zawartości dowolnego miejsca definiowania xml Typ (wpisywanych xml). Na przykład podczas tworzenia maszynowy xml Zmienna, można dodać zestaw reguł dokumentu/zawartości, jak to pokazano w poniższym:

declare @x xml (DOCUMENT Production.ProductDescriptionSchemaCollection)

Definicja typu dokumentu (DTD)

The xml data type columns, variables, and parameters can be typed by using XML schema, but not by using DTD.Jednak wbudowane DTD można zarówno pismo, jak i bez typu XML o podanie wartości domyślne i zastąpienie ich formie rozwiniętej odwołania do obiektu.

Konwertowanie dokumentów schematu XML elementów DTD za pomocą narzędzi innych firm i załadować schematów XML do bazy danych.

Uaktualnienie XML określonego oprogramowania SQL Server 2005 do programu SQL Server 2008

Program SQL Server 2008 został wprowadzonych kilka rozszerzeń obsługę schematu XML, w tym obsługę łagodnymi sprawdzania poprawności, udoskonalona obsługa xs: data, xs:czas and xs:dataTime dane wystąpienie i dodano obsługę dla typów list i związku.W większości przypadków zmiany nie mają wpływu na uaktualnienia komputera.Jednak jeśli używasz kolekcja schematów XML w programie SQL Server 2005 dozwolone wartości typu xs: data, xs:czas, or xs:dataTime (lub dowolnego podtypu), a następnie wykonywane są następujące kroki uaktualnienia bazy danych programu SQL Server 2005 w przypadku dołączania do programu SQL Server 2008:

  1. Dla każdej kolumna XML, który zostanie wpisany z kolekcja schematów XML, zawierające elementy lub atrybuty, które są wpisane jako xs:anyType, xs:anySimpleType, xs lub któregokolwiek z jej podtypów, xs:czas lub dowolnego jego podtyp lub xs:dateTime lub któregokolwiek z jej podtypów lub są Unii lub występuje następujących typów list zawierające dowolny z następujących typów:

    1. Wszystkie indeksy XML na podstawie kolumna zostaną wyłączone.

    2. Wszystkie wartości w programie SQL Server 2005 będzie można przedstawić w Z timezone ponieważ zostały one już znormalizowane do Z timezone.

    3. Wszystkie xs: data or xs:dataTime wartości, które są mniejsze niż 1 stycznia rok 1 doprowadzi do błąd wykonania podczas indeks pobiera odbudowywania lub XQuery lub instrukcji XML DML pobiera wykonywane przed typ danych XML zawierających tę wartość.

  2. Wszystkie lata ujemne xs or xs:dateTime aspekty lub wartości domyślne w zbiorze schematu XML zostaną automatycznie zaktualizowane na najmniejszą wartość dozwolona przez podstawowy xs or xs:dateTime typu (np., 0001 - 01 - 01T00:00:00.0000000Z dla xs:dateTime).

Należy pamiętać, że użytkownik może nadal używać prostej instrukcja select SQL pobrać cały typu danych XML, nawet wtedy, gdy zawiera on ujemny lata.Zalecane jest, należy zastąpić ujemne lat w roku w zakresie nowo obsługiwanych lub zmienić typ elementu lub atrybut do xs:ciąg.