Udostępnij za pośrednictwem


XML wpisywanych w porównaniu do pliku XML bez typu

Można tworzyć zmienne, parametrów i kolumny xml typu.Opcjonalnie można skojarzyć kolekcja schematów XML za pomocą zmiennych parametrów, lub kolumna z xml typu.W takim przypadek xml wystąpienie typu danych jest nazywany wpisane.W przeciwnym razie XML wystąpienie jest nazywany bez.

Poprawnie sformułowany kod XML i typ danych xml

xml Typ danych implementuje normy ISO xml typu danych.Dlatego go przechowywać dokumenty XML poprawnie sformułowany w wersja 1.0 i również zwane fragmenty zawartości XML z węzłami tekstu i dowolnej liczby elementów najwyższego poziom kolumna XML bez typu.System sprawdza, że dane są poprawnie sformułowane, nie wymagają kolumna powiązać schematów XML i odrzuca dane, które nie jest poprawnie sformułowanym w rozszerzonym znaczeniu.Dotyczy to również zmienne bez typu XML i parametry.

Schematy XML

Schemat XML zawiera następujące czynności:

  • Sprawdzanie poprawności ograniczeń. Ilekroć przypisane lub modyfikacji instancję xml pismo SQL Server sprawdza wystąpienie.

  • Typ danych informacji. Schematy dostarczają informacji na temat typów atrybutów i elementów w xml Typ danych wystąpienie.Informacje o typie zapewnia dokładniejsze semantyka operacyjne do wartości zawarte w wystąpienie nie jest możliwe z bez xml.Na przykład dziesiętny operacji arytmetycznych można przeprowadzić na wartości dziesiętne, ale nie na wartość ciąg.Z tego powodu maszynowy magazynu XML mogą być dokonywane znacznie bardziej zwarty niż XML bez typu.

Wybieranie wpisane lub bez typu XML

Użyj pozostawiana xml Typ danych w następujących sytuacjach:

  • Nie masz schemat danych XML.

  • Masz schematów, ale nie chcesz, aby serwer sprawdzania poprawności danych.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 według schematu lub używa schematu składników, które nie są obsługiwane na serwerze.

Użyj wpisane xml Typ danych w następujących sytuacjach:

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

  • Chcesz korzystać z magazynu i optymalizacje na podstawie typu informacji.

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

Pismo kolumn, parametrów i zmiennych XML można przechowywać dokumenty XML lub zawartości.Jednakże, należy określić z flagą, czy są przechowywane w dokumencie lub zawartości w czas deklaracja.Ponadto konieczne jest podanie kolekcja schematów XML.Jeśli każde wystąpienie XML ma dokładnie jeden element najwyższego poziom, należy określić dokument.W przeciwnym razie użyj zawartości.Kompilator kwerendy używa flagi dokumentu typ kontroli podczas kompilacji kwerendy rozpoznać pojedynczych elementów najwyższego poziom.

Tworzenie maszynowy XML

Przed utworzeniem maszynowy xml zmiennych, parametrów lub kolumn, należy najpierw zarejestrować kolekcja schematu XML za pomocą UTWORZYĆ KOLEKCJI SCHEMATU XML (Transact-SQL).Następnie kolekcja schematu XML można skojarzyć zmienne, parametrów lub kolumn xml typu 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 nazwa schematu, a druga część jest nazwa kolekcja schematu XML.

Przykład: Kojarzenie kolekcji schematu XML typu zmiennej

The following example creates anxml type variable and associates a schema collection with it.Już jest przywożony kolekcja schematu, określonej w przykładzie AdventureWorks2008R2 bazy danych.

DECLARE @x xml (Production.ProductDescriptionSchemaCollection) 

Przykład: Określanie schematu XML typu kolumny

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

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

Przykład: Przekazanie parametru typu xml do procedury przechowywanej

Poniższy przykład przekazuje xml wpisz parametr do procedura składowana i określa schematu dla zmiennej:

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

Należy zwrócić uwagę na poniższe kolekcja schematu XML:

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

  • Jeśli można rzutować z ciąg maszynowy xml Typ danych również analizę wykonuje sprawdzanie poprawności i wpisując oparty na obszarach nazw schematu XML w określonej kolekcja.

  • Można rzutować z wpisaną xml typu danych bez xml Typ danych, i vice versa.

Aby uzyskać więcej informacji na temat innych sposobów generowania XML w programie SQL Server, zobacz Generowanie instancji XML.Po wygenerowaniu XML można ją przypisać do xml danych wpisz zmienną lub przechowywane w xml kolumn typu dodatkowe przetwarzanie.

W hierarchii typów danych xml Typ danych pojawia się poniżej sql_variant i typy zdefiniowane przez użytkownika, ale powyżej tych wbudowanych typów.

Przykład: Określanie faset, aby ograniczyć xml Typed kolumny

Dla wpisane xml kolumna, możesz ograniczyć kolumna, aby zezwolić tylko jednego, najwyższego poziom elementów dla każdego wystąpienie przechowywane w typie.Aby to zrobić, określając opcjonalny DOCUMENT aspekt podczas tworzenia tabela, jak pokazano w następującym 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 dokumentów XML.Pozwala to na następujące:

  • Zero lub wiele elementów najwyższego poziom

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

To zachowanie można także jawnie określić dodając CONTENT aspekt, jak pokazano w następującym przykładzie:

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

Uwaga określić opcjonalny faset dokumentu i zawartości, gdziekolwiek definiowania xml Typ (xml wpisany).Na przykład podczas tworzenia maszynowy xml zmiennej, można dodać aspekt dokumentu i zawartości, jak pokazano poniżej:

declare @x xml (DOCUMENT Production.ProductDescriptionSchemaCollection)

Document Type Definition (DTD)

xml Typu danych kolumny, zmiennych i parametrów można wpisać za pomocą schematu XML, ale nie używając DTD.Jednakże wbudowany DTD można maszynowy i bez typu XML do dostarczania wartości domyślne i zastąpienie ich rozwiniętej formie odwołań do obiekt.

Można przekonwertować pliki DTD dokumenty schematu XML za pomocą narzędzi innych firm i załadować schematów XML do bazy danych.

Uaktualnienie programu SQL Server 2005 maszynowy XML do programu SQL Server 2008

SQL Server 2008 ma dokonać kilku rozszerzeń obsługa schematów XML, w tym obsługę lax sprawdzania poprawności, udoskonalona obsługa xs:data, : czas i xs:dataczasu dane wystąpienie i dodano obsługę dla typów list i Unii.W większości przypadków zmiany nie wpływają na uaktualnienia doświadczenia.Jednak korzystania z kolekcja schematu XML w programie SQL Server 2005, że dozwolone wartości typu xs:data, : czas, lub xs:dataczasu (lub dowolnego podtypu), a następnie są wykonywane następujące kroki uaktualnienia podczas dołączania bazy danych SQL Server 2005, SQL Server 2008:

  1. Każdej kolumna XML, który został wpisany z kolekcji schematu XML, zawierający elementów lub atrybutów, które są wpisane jako xs:anyType, xs:anySimpleType, xs:data lub jego podtypów : czas lub dowolnym podtypie, lub xs:dataczasu lub jego podtypów, lub są Unii lub typów listy zawierające dowolny z tych typów na następujące zdarzenia:

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

    2. Wszystkie wartości programu SQL Server 2005 będzie reprezentowana w z timezone ponieważ mają zostały znormalizowane do z timezone.

    3. Dowolny xs lub xs wartości, które są mniejsze niż 1 stycznia roku 1 doprowadzi do błędu czasu wykonywania kiedy uzyskuje indeksu rekonstrukcji lub XQuery lub XML -DML instrukcji wykonywana pobiera typ danych XML zawierający tę wartość.

  2. Żadna negatywna lat w xs:data lub xs:dataczasu faset lub wartości domyślne kolekcja schematu XML zostanie automatyczniedatad najmniejszą wartość dozwolona przez podstawę xs:data lub xs:dataczasu typu (np 0001-01-01T00:00:00.0000000Z dla xs:dataczasu).

Należy zauważyć, że można nadal używać prosta instrukcja SQL select pobrać cały typ danych XML, nawet, jeśli zawiera ona lat negatywne.Zaleca się, aby zastąpić ujemne lat z roku w nowo obsługiwany zakres lub zmienić typ elementu lub atrybut do xs:ciąg.