Udostępnij za pośrednictwem


Typy danych XML

SQL Server 2005wprowadzone xml typ danych, który umożliwia przechowywanie dokumentów XML i fragmentów w SQL Server bazy danych.Xml typ danych jest typ danych wbudowane w SQL Serveri pod pewnymi względami podobny do innych wbudowanych typów, takich jak int i varchar.Jak z innymi typami wbudowanych można używać xml typu danych jako typ kolumna podczas tworzenia tabela; Typ zmiennej, typ parametru lub typ zwrotny funkcja; lub ODDANYCH i konwertowanie funkcje.

Zagadnienia dotyczące programowania

XML może być uzależnienie do wpisów, można opcjonalnie uwzględnić nagłówek XML, który określa kodowanie dokumentu, na przykład:

<?xml version="1.0" encoding="windows-1252"?><doc/>

XML standard opisuje, jak procesor XML można wykrywać kodowanie używane przez zbadanie kilku pierwszych bajtów dokumentu do dokumentu.Brak możliwości kodowania określonej przez aplikację w konflikcie z kodowania określonego dokumentu.W przypadku dokumentów przekazane jako parametry związane XML jest traktowana jako dane binarne przez SQL Server, są dokonywane nie konwersje i analizatora składni XML można użyć kodowania określonego w dokumencie bez problemów.Jednak dane XML, powiązaną jako WSTR, następnie aplikacja musi zapewniać dokumentu jest zakodowanych w formacie Unicode.To może pociągać za sobą ładowania dokumentu do modelu DOM Zmienianie kodowania Unicode i szeregowania dokumentu.Jeśli nie zostanie to zrobione, konwersji danych może wystąpić, wynikowy w formacie XML nieprawidłowy lub uszkodzony.

Istnieje także potencjalnego konfliktu podczas XML jest określona w literały.Na przykład następujące są nieprawidłowe:

INSERT INTO xmltable(xmlcol) VALUES('<?xml version="1.0" encoding="UTF-16"?><doc/>')

INSERT INTO xmltable(xmlcol) VALUES(N'<?xml version="1.0" encoding="UTF-8"?><doc/>')

Dostawca OLE DB programu SQL Server Native Client

DBTYPE_XML jest nowy typ danych określony kod XML w SQL Server macierzystego klienta OLE DB dostawca.Ponadto dane XML jest możliwy za pośrednictwem istniejących typów OLE DB, DBTYPE_BYTES, DBTYPE_WSTR, DBTYPE_BSTR, DBTYPE_XML, typem DBTYPE_STR, DBTYPE_VARIANT i DBTYPE_IUNKNOWN.Dane przechowywane w kolumnach typu XML można pobrać z kolumna SQL Server macierzystego klienta OLE DB dostawca zestaw wierszy w następujących formatach:

  • Ciąg tekstowy

  • ISequentialStream

Ostrzeżenie

SQL Server Macierzystego klienta dostawca OLE DB nie ma czytnika SAX, ale ISequentialStream mogą łatwo przekazywane SAX i DOM obiekty programu MSXML.

ISequentialStream należy używać, używane do pobierania dużych dokumentów XML.Te same techniki używane w innych typach dużą wartość stosuje się także do formatu XML.Aby uzyskać więcej informacji, zobacz Za pomocą dużych typów wartości.

Dane przechowywane w kolumnach typu XML w zestawu zestaw wierszy można również pobrać, wstawiany lub aktualizowany przez aplikację za pośrednictwem interfejsów zwykły takich jak IRow::GetColumns, IRowChange::SetColumns, i ICommand::Execute.Podobnie przypadek pobierania program aplikacji można przekazać ciąg tekstowy lub ISequentialStream do SQL Server macierzystego klienta OLE DB dostawca.

Ostrzeżenie

Wysyłanie danych XML w formacie ciąg znaków poprzez ISequentialStream interfejs, należy uzyskać ISequentialStream przez określenie DBTYPE_IUNKNOWN i zestaw jego pObject argument null w powiązaniu.

Gdy pobierane dane XML jest obcięta z powodu jest za mały bufor konsumenta, długość może być zwrócona jako 0xffffffff, co oznacza, że długość jest nieznany.Jest to zgodne z jego wykonania jako typ danych strumieniowo do klient bez wysyłania informacji o długości z wyprzedzeniem rzeczywiste dane.W niektórych przypadkach rzeczywistej długości mogą być zwracane, kiedy dostawca ma buforowane całej wartości, takich jak IRowset::GetData i gdzie wykonywane konwersji danych.

Dane XML, wysyłane do SQL Server jest traktowana jako dane binarne przez serwer.To zapobiega konwersje wszelkie występujące i pozwala analizatora składni XML do auto -wykrywać kodowania XML.Umożliwia szersze dokumentów zakres XML (na przykład te zakodowane w UTF-8) akceptowane jako dane wejściowe do SQL Server.

Jeśli dane wejściowe XML jest powiązana jako DBTYPE_WSTR, aplikacja musi zapewnić jest już Unicode zakodowane by uniknąć możliwości uszkodzenia przez niepożądane dane konwersji.

Powiązania danych i Coercions

The following table describes the binding and coercion that occurs when using the listed data types with the SQL Server xml data type.

Typ danych

Do serwera

XML

Do serwera

-Z XML

Z serwera

XML

Z serwera

-Z XML

DBTYPE_XML

Przechodzą przez6,7

Błąd1

OK11, 6

Błąd8

DBTYPE_BYTES

Przechodzą przez6,7

N/A2

OK11, 6

N/A2

DBTYPE_WSTR

Przechodzą przez6,10

N/A2

OK4, 6, 12

N/A2

DBTYPE_BSTR

Przechodzą przez6,10

N/A2

OK 3

N/A2

TYPEM DBTYPE_STR

OK6, 9, 10

N/A2

OK5, 6, 12

N/A2

DBTYPE_IUNKNOWN

Strumień bajtów, via ISequentialStream7

N/A2

Strumień bajtów, via ISequentialStream11

N/A2

DBTYPE_VARIANT (VT_UI1 | VT_ARRAY)

Przechodzą przez6,7

N/A2

Brak

N/A2

DBTYPE_VARIANT (VT_BSTR)

Przechodzą przez6,10

N/A2

OK 3

N/A2

1Jeśli typ serwera, inne niż określona z DBTYPE_XML ICommandWithParameters::SetParameterInfo i metoda dostępu typ jest DBTYPE_XML, wystąpi błąd podczas wykonywania instrukcja (DB_E_ERRORSOCCURRED, stan parametru jest DBSTATUS_E_BADmetoda dostępu); w przeciwnym razie dane są przesyłane do serwera, ale serwer zwraca błąd wskazujący, że jest niejawna konwersja z pliku XML do typu danych parametru.

2Poza zakres tego tematu.

3Jest format UTF-16, Brak znacznika kolejności bye (BOM), bez określenia kodowania, nie zakończenie null.

4Jest format UTF-16, żaden BOM bez określenia kodowania zakończenie null.

5Znaki wielobajtowe zakodowane w kodzie klient jest format strona z zerową terminator.Konwersja z serwera dostarczony Unicode może spowodować uszkodzenie danych, tak to powiązanie jest zdecydowanie niewskazane.

6BY_REF mogą być używane.

7Danych UTF-16 musi zaczynać się BOM.Jeśli nie, kodowanie może nie zostać poprawnie rozpoznane przez serwer.

8Poprawności może się zdarzyć na utworzenie metoda dostępu lub na czas pobierania.Błąd jest DB_E_ERRORSOCCURRED, powiązanie DBBINDSTATUS_UNSUPPORTEDCONVERSION to zestaw.

9Danych jest konwertowana na Unicode przy użyciu strony kodowej klient przed wysłaniem do serwera.Jeśli kodowanie dokumentu nie pasuje do strony kodowej klient, to może spowodować uszkodzenie danych, to powiązanie zdecydowanie odradza się.

10A BOM jest zawsze dodawana do danych wysyłanych do serwera.Jeśli dane już uruchomiony z BOM, to wyniki w dwóch BOM na początku buforu.Serwer używa pierwszego BOM rozpoznać kodowania UTF-16 i odrzuca je.Drugi BOM jest interpretowana jako zerowej szerokości znaku spacji nierozdzielającej.

11Formatu UTF-16, brak specyfikacji kodowania BOM jest dodaje się dane otrzymane z serwera.Jeśli serwer zwraca ciąg pusty, BOM jest nadal zwracany do aplikacji.Jeśli długość buforu jest nieparzysta liczba bajtów, dane zostaną obcięte poprawnie.Jeśli cała wartość jest zwracana w kawałki, może zostać dołączona do odtworzenia poprawną wartość.

12, Jeśli długość buforu jest mniej niż dwa znaki--jest za mało miejsca zakończenia null--zwróci błąd przepełnienia.

Ostrzeżenie

Wartości NULL XML są zwracane żadne dane.

XML standard wymaga XML uruchomić znacznik porządku bajtów (BOM), kod znaku UTF-16 0xFEFF zakodowane UTF-16.Podczas pracy z powiązaniami WSTR i BSTR, SQL Server Native Client nie wymagają ani dodać BOM, jak kodowanie jest determinowana przez powiązanie.Podczas pracy z BAJTÓW, XML lub IUNKNOWN powiązania, zamiarem jest zapewnienie uproszczenia w dotyczącym inne procesory XML i systemów pamięci masowej.W tym przypadek BOM powinna być obecnie z UTF-16 zakodowane XML i aplikacji nie muszą zainteresowanych rzeczywiste kodowania, ponieważ większość procesory XML (w tym programu SQL Server) deduces kodowania, sprawdzając, czy kilku pierwszych bajtów wartość.Dane XML, otrzymane z SQL Server Native Client BAJTÓW, XML lub IUNKNOWN powiązania zawsze jest zakodowane w UTF-16 z BOM-U i bez osadzonego kodowania deklaracja.

Konwersje danych dostarczonych przez OLE DB core services (IDataConvert) nie mają zastosowania do DBTYPE_XML.

Jest sprawdzana podczas wysyłania danych do serwera.Sprawdzanie poprawności po stronie klienta i zmiany kodowania obsługi aplikacji i zaleca się że nie bezpośrednio przetwarzania danych XML, ale zamiast tego należy używać DOM lub SAX czytnik do jego przetworzenia.

DBTYPE_NULL i DBTYPE_EMPTY mogą być powiązane parametry wejściowe, ale nie dla parametrów wyjściowych lub wyniki.Powiązany parametrów wejściowych stan musi być zestaw DBSTATUS_S_ISNULL lub DBSTATUS_S_DEFAULT.

DBTYPE_XML mogą być konwertowane na DBTYPE_EMPTY i DBTYPE_NULL, DBTYPE_EMPTY, które mogą być konwertowane na DBTYPE_XML, ale DBTYPE_NULL nie można przekonwertować na DBTYPE_XML.Jest to zgodne z DBTYPE_WSTR.

DBTYPE_IUNKNOWN jest obsługiwany powiązanie (jak pokazano w powyższej tabela), ale istnieją nie konwersje między DBTYPE_XML i DBTYPE_IUNKNOWN.DBTYPE_IUNKNOWN nie może być używana z DBTYPE_BYREF.

OLE DB wierszy uzupełnień i zmian

SQL ServerNative Client dodaje nowe wartości lub zmiany do wielu podstawowych zestawów wierszy schematu DB OLE.

PROCEDURE_PARAMETERS schematu wierszy i kolumn

Dodatki do zestawów wierszy kolumn i PROCEDURE_PARAMETERS schemat zawiera następujące kolumny.

Nazwa kolumny

Typ

Opis

SS_XML_SCHEMACOLLECTION_CATALOGNAME

DBTYPE_WSTR

Nazwa katalogu, w którym zdefiniowano kolekcja schematu XML.Wartość NULL dla kolumna XML programu lub tym XML.

SS_XML_SCHEMACOLLECTION_SCHEMANAME

DBTYPE_WSTR

Nazwa schematu, w którym zdefiniowano kolekcja schematu XML.Wartość NULL dla kolumna XML programu lub tym XML.

SS_XML_SCHEMACOLLECTIONNAME

DBTYPE_WSTR

Nazwa kolekcja schematu XML.Wartość NULL dla kolumna XML programu lub tym XML.

Zestaw wierszy schematu PROVIDER_TYPES

W zestawie zestaw wierszy schematu PROVIDER_TYPES COLUMN_SIZE wartość 0 dla xml typ danych i DATA_TYPE jest DBTYPE_XML.

Zestaw wierszy schematu SS_XMLSCHEMA

Nowy zestaw wierszy schematu SS_XMLSCHEMA została wprowadzona dla klientów do pobierania informacji o schemacie XML.Zestaw wierszy SS_XMLSCHEMA zawiera następujące kolumny.

Nazwa kolumny

Typ

Opis

SCHEMACOLLECTION_CATALOGNAME

DBTYPE_WSTR

Wykaz kolekcja XML należy do.

SCHEMACOLLECTION_SCHEMANAME

DBTYPE_WSTR

Schemat XML kolekcja należy do.

SCHEMACOLLECTIONNAME

DBTYPE_WSTR

Nazwa XML kolekcja schematu dla kolumn XML maszynowy, NULL inaczej.

TARGETNAMESPACEURI

DBTYPE_WSTR

miejsce docelowe obszar nazw schematu XML.

SCHEMACONTENT

DBTYPE_WSTR

Zawartość schematu XML.

Każdy schemat XML jest objęty zakresem, nazwę katalogu, nazwę schematu, nazwa kolekcja schematu, i miejsce docelowe nazwa przestrzeń Uniform Resource Identifier (URI).Ponadto nowy identyfikator GUID o nazwie DBSCHEMA_XML_COLLECTIONS również jest zdefiniowany.Liczba ograniczeń i ograniczeniami kolumn dla zestaw wierszy schematu SS_XMLSCHEMA są zdefiniowane w następujący sposób.

IDENTYFIKATOR GUID

Liczba ograniczeń

Kolumny z ograniczeniami

DBSCHEMA_XML_COLLECTIONS

4

SCHEMACOLLECTION_CATALOGNAME

SCHEMACOLLECTION_SCHEMANAME

SCHEMACOLLECTIONNAME

TARGETNAMESPACEURI

OLE DB właściwości ustaw uzupełnień i zmian

SQL ServerNative Client dodaje nowe wartości lub zmian wiele podstawowych właściwość OLE DB zestawów.

Ustaw właściwość DBPROPSET_SQLSERVERPARAMETER

Do obsługi xml typ danych OLE DB, za pośrednictwem SQL Server Native Client implementuje nowego zestaw właściwość DBPROPSET_SQLSERVERPARAMETER, który zawiera następujące wartości.

Nazwa

Typ

Opis

SSPROP_PARAM_XML_SCHEMACOLLECTION_CATALOGNAME

DBTYPE_WSTR

Nazwa katalogu (bazy danych), w którym zdefiniowano kolekcja schematu XML.Część identyfikatora Nazwa trzech części SQL.

SSPROP_PARAM_XML_SCHEMACOLLECTION_SCHEMANAME

DBTYPE_WSTR

Nazwa schematu XML kolekcja schematu.Część identyfikatora Nazwa trzech części SQL.

SSPROP_PARAM_XML_SCHEMACOLLECTIONNAME

DBTYPE_WSTR

Nazwa kolekcja schematu XML w katalogu część identyfikatora nazwy części trzy - SQL.

Ustaw właściwość DBPROPSET_SQLSERVERCOLUMN

Obsługiwać tworzenie tabel w ITableDefinition interfejs SQL Server Native Client dodaje trzy kolumny do zestaw właściwość DBPROPSET_SQLSERVERCOLUMN.

Nazwa

Typ

Opis

SSPROP_COL_XML_SCHEMACOLLECTION_CATALOGNAME

VT_BSTR

Pismo kolumn XML ta właściwość jest ciąg określający nazwę katalogu przechowywania schematu XML.Inne kolumna typów właściwość ta zwraca pusty ciąg.

SSPROP_COL_XML_SCHEMACOLLECTION_SCHEMANAME

VT_BSTR

Pismo kolumn XML ta właściwość jest ciąg określający nazwę schemat XML określający tej kolumna.

SSPROP_COL_XML_SCHEMACOLLECTIONNAME

VT_BSTR

Pismo kolumn XML ta właściwość jest ciąg określający nazwę schematu definiowanie wartości kolekcja schematu XML.

Wartości SSPROP_PARAM, podobnie jak wszystkie te właściwości są opcjonalne i domyślnie puste.SSPROP_COL_XML_SCHEMACOLLECTION_CATALOGNAME i SSPROP_COL_XML_SCHEMACOLLECTION_SCHEMANAME mogą być tylko określone, jeśli określono SSPROP_COL_XML_SCHEMACOLLECTIONNAME.Przy przekazywaniu XML do serwera, jeśli te wartości są objęte są sprawdzane istnienia (ważność) w bieżącej bazie danych i wystąpienie danych jest sprawdzana względem schematu.We wszystkich przypadkach ważne są wszystkie puste lub wszystkie wypełnione.

OLE DB interfejsu uzupełnień i zmian

SQL ServerNative Client dodaje nowe wartości lub zmian wiele podstawowe interfejsy OLE DB.

Interfejs ISSCommandWithParameters

Do obsługi xml typ danych OLE DB, za pośrednictwem SQL Server liczbę zmian z dodawaniem implementuje Native Client ISSCommandWithParameters interfejs.Ten interfejs dziedziczy z interfejsem OLE DB core ICommandWithParameters.Oprócz trzy metody dziedziczone z ICommandWithParameters; GetParameterInfo, MapParameterNames, i metoda SetParameterInfo; ISSCommandWithParameters zawiera GetParameterProperties i SetParameterProperties metod, które są używane do obsługi typów danych określonego serwera.

Ostrzeżenie

ISSCommandWithParameters interfejs również korzysta z SSPARAMPROPS nowe struktury.

Interfejs IColumnsRowset

SQL ServerNative Client dodaje następujące SQL Server-określonych kolumn do zestaw wierszy zwracanych przez IColumnRowset::GetColumnsRowset metoda.Te kolumny zawierają nazwę trzech części kolekcja schematu XML.XML inny niż kolumny lub kolumn bez typu XML wszystkie trzy kolumny podjąć domyślnej wartości NULL.

Nazwa kolumny

Typ

Opis

DBCOLUMN_SS_XML_SCHEMACOLLECTION_CATALOGNAME

DBTYPE_WSTR

Wykaz kolekcja schematu XML, do której należy

W przeciwnym razie wartość NULL.

DBCOLUMN_SS_XML_SCHEMACOLLECTION_SCHEMANAME

DBTYPE_WSTR

Schemat XML kolekcja schematu należy do.W przeciwnym razie wartość NULL.

DBCOLUMN_SS_XML_SCHEMACOLLECTIONNAME

DBTYPE_WSTR

Nazwa kolekcja schematu XML dla kolumna maszynowy XML, NULL inaczej.

Interfejsu IRowset

XML wystąpienie w XML kolumny jest pobierana przez IRowset::GetData metoda.W zależności od tego, wiązanie określone przez klient XML wystąpienie można pobrać jako DBTYPE_BSTR, DBTYPE_WSTR, DBTYPE_VARIANT, DBTYPE_XML, typem DBTYPE_STR, DBTYPE_BYTES lub DBTYPE_IUNKNOWN za pośrednictwem interfejs.Jeśli konsument określa DBTYPE_BSTR, DBTYPE_WSTR lub DBTYPE_VARIANT, konwertuje dostawca XML wystąpienie użytkownika zażądał typu i umieścić go w lokalizacji określonej w odpowiednie powiązanie.

Jeśli konsument określa DBTYPE_IUNKNOWN i ustawia pObject argument NULL lub zestawy pObject argument IID_ISequentialStream, dostawca zwraca ISequentialStream interfejs dla konsumenta, tak aby konsument może strumienia danych XML z kolumna.ISequentialStream zwraca wartość danych XML jako strumień znaków Unicode.

Kiedy zwracać wartość XML związana z DBTYPE_IUNKNOWN, dostawca zgłasza wartość rozmiaru sizeof (IUnknown *).Należy zauważyć, że jest to zgodne z podejściem przyjmowanym podczas kolumna jest związany DBTYPE_IUnknown lub DBTYPE_IDISPATCH oraz DBTYPE_IUNKNOWN i ISequentialStream, gdy nie można określić rozmiar kolumna dokładnie.

Interfejs IRowsetChange

Istnieją dwa sposoby konsument może zaktualizować XML wystąpienie kolumna.Pierwszym jest przez obiekt magazynu ISequentialStream utworzone przez dostawca.Konsument może wywołać ISequentialStream::Write metoda aktualizacji bezpośrednio XML wystąpienie zwrócone przez dostawca.

Drugie podejście jest przez IRowsetChange::SetData lub IRowsetChange::InsertRow metody.Takie założenia XML wystąpienie w buforze użytkownika może być określony w powiązanie typu DBTYPE_BSTR, DBTYPE_WSTR, DBTYPE_VARIANT, DBTYPE_XML lub DBTYPE_IUNKNOWN.

przypadek DBTYPE_BSTR, DBTYPE_WSTR lub DBTYPE_VARIANT, dostawca przechowuje XML wystąpienie znajdujących się w buforze konsumenta do właściwej kolumna.

W przypadek DBTYPE_IUNKNOWN/ISequentialStream, jeśli konsument nie Określa dowolny obiekt magazynu konsument musi utworzyć ISequentialStream z góry obiektu, dokumentu XML z obiektem związać, a następnie przekazać obiekt dostawca poprzez IRowsetChange:: SetData metoda.Konsumenta można również utworzyć obiekt magazynu zestaw utworzyć argument pObject IID_ISequentialStream, ISequentialStream obiekt, a następnie przekazać ISequentialStream obiektu do IRowzestawzmiany::zestawdanych metoda.W obu przypadkach dostawca można pobrać obiektu XML przez ISequentialStream obiektu i włóż ją do właściwej kolumna.

Interfejs IRowsetUpdate

IRowsetUpdate interfejs zapewnia funkcjonalność opóźnione aktualizacje.Dane udostępniane zestawów wierszy nie są dostępne inne transakcji aż do wywołania konsumenta IRowsetUpdate:Update metoda.

Interfejs IRowsetFind

IRowsetFind::FindNextRow metoda nie działa z xml typu danych.Gdy IRowsetFind::FindNextRow jest nazywany i hAccessor argument określa kolumna DBTYPE_XML, DB_E_BADBINDINFO jest zwracany.Ten problem występuje niezależnie od typu kolumna, która jest przeszukiwane.Dla innych powiązanie typu, FindNextRow nie działa z DB_E_BADCOMPAREOP, jeśli kolumna ma być przeszukiwany jest xml typu danych.

Sterownik ODBC macierzystym klienta SQL Server

W SQL Server sterownik ODBC macierzystym klienta liczba zmian wprowadzono różne funkcje do obsługi xml typu danych.

SQLColAttribute

SQLColAttribute funkcja ma nowe pole identyfikatorów, łącznie z _XML_SCHEMACOLLECTION_NAME SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME, SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME i SQL_CA_SS.

SQL Server Raporty sterownika ODBC macierzystym klienta SQL_SS_LENGTH_UNLIMITED dla kolumny SQL_DESC_DISPLAY_SIZE i SQL_DESC_LENGTH.

SQLColumns

SQLColumns funkcja ma trzy kolumny w tym SS_XML_SCHEMACOLLECTION_CATALOG_NAME, SS_XML_SCHEMACOLLECTION_SCHEMA_NAME i SS_XML_SCHEMACOLLECTION_NAME.Istniejącą kolumna TYPE_NAME jest używany do wskazania nazwy typu XML i DATA_TYPE dla kolumna typu XML lub parametr jest SQL_SS_XML.

SQL Server Raporty sterownika ODBC macierzystym klienta SQL_SS_LENGTH_UNLIMITED dla wartości COLUMN_SIZE i CHAR_OCTET_LENGTH.

SQLDescribeCol

SQL Server Sterownik ODBC macierzystym klienta raportów SQL_SS_LENGTH_UNLIMITED, gdy nie można określić rozmiaru kolumna w SQLDescribeCol funkcja.

SQLGetTypeInfo

SQL Server Sterownik ODBC macierzysty klient zgłasza SQL_SS_LENGTH_UNLIMITED jako maksymalna COLUMN_SIZE dla xml typ danych w SQLGetTypeInfo funkcja.

SQLProcedureColumns

SQLProcedureColumns funkcja ma te same dodatki kolumna jako SQLColumns funkcji.

SQL Server Sterownik ODBC macierzysty klient zgłasza SQL_SS_LENGTH_UNLIMITED jako maksymalna COLUMN_SIZE dla xml typu danych.

Konwersje obsługiwanych

Podczas konwersji z SQL typów danych C, SQL_C_WCHAR, SQL_C_BINARY i SQL_C_CHAR można wszystkie przekonwertować SQL_SS_XML, z informacjami umieszczonymi następujące:

  • SQL_C_WCHAR: Format jest null zakończenie UTF-16, Brak znacznika kolejności bajtów (BOM).

  • SQL_C_BINARY: Format jest UTF-16 nie zakończenie null.BOM jest dodawana do dane otrzymane z serwera.Jeśli serwer zwraca ciąg pusty BOM jest nadal zwracany do aplikacji.Długość buforu jest nieparzysta liczba bajtów poprawnie zaokrąglane ise danych.Jeśli cała wartość jest zwracana w fragmentów może zostać dołączona do poprawnej wartości re-constitute

  • SQL_C_CHAR: Format jest zakodowany w kliencie znaki wielobajtowe strona kodowa z zakończenia null.Konwersja z serwera dostarczony UTF-16 może spowodować uszkodzenie danych, tak to powiązanie jest zdecydowanie niewskazane.

Podczas konwersji z c typy danych języka SQL, SQL_C_WCHAR, SQL_C_BINARY i SQL_C_CHAR można wszystkie przekonwertować SQL_SS_XML, z informacjami umieszczonymi następujące:

  • SQL_C_WCHAR: BOM jest zawsze dodawana do danych wysyłanych do serwera.Jeśli dane już uruchomiony z BOM, to wyniki w dwóch BOM na początku buforu.Serwer używa pierwszego BOM rozpoznać kodowania UTF-16 i odrzucić je.Drugi BOM jest interpretowana jako zerowej szerokości znaku spacji nierozdzielającej.

  • SQL_C_BINARY: Konwersja nie jest wykonywane, a dane są przekazywane do serwera "tak jak"jest. UTF-16 danych musi zaczynać się BOM; Jeśli nie, kodowanie może nie zostać poprawnie rozpoznane przez serwer.

  • SQL_C_CHAR: Dane są konwertowane klient UTF-16 i wysyłane do serwera, podobnie jak SQL_C_WCHAR (łącznie dodania BOM).Jeśli kod XML nie jest zakodowany w kliencie strona kodowa to może spowodować uszkodzenie danych.

XML standard wymaga XML uruchomić znacznik porządku bajtów (BOM), kod znaku UTF-16 0xFEFF zakodowane UTF-16.Podczas pracy z powiązaniem SQL_C_BINARY, SQL Server Native Client nie wymagają ani dodać BOM, jak kodowanie jest determinowana przez powiązanie.Zamiarem jest zapewnienie uproszczenia w dotyczącym inne procesory XML i systemów pamięci masowej.W tym przypadek BOM powinien być obecny w UTF-16 kodowania XML i aplikacji nie muszą zainteresowanych rzeczywiste kodowania, ponieważ większość procesory XML (łącznie z SQL Server) wywnioskowanie kodowania, sprawdzając, czy pierwsze kilka bajtów wartość.Dane XML, otrzymane z SQL Server macierzystego klienta za pomocą SQL_C_BINARY powiązania są zawsze zakodowane w UTF-16 z BOM-U i bez osadzonego kodowanie deklaracja.