Udostępnij za pośrednictwem


Używanie typów danych XML

SQL Server 2005 wprowadzone XML typ danych, który pozwala na przechowywanie dokumentów XML i fragmentów w SQL Server Baza danych. The xml data type is a built-in data type in SQL Server, and is in some ways similar to other built-in types, such as int and varchar.Jak z innymi typami wbudowanych, można użyć XML Typ danych jako typ kolumna, podczas tworzenia tabela; typ zmiennej, typ parametru lub typ zwrotny funkcja; lub w funkcja CAST i CONVERT.

Uwagi dotyczące programowania

W tym nagłówkiem XML, który określa kodowanie dokumentu, na przykład opcjonalnie może zawierać XML może być self-describing:

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

Standardu XML opisuje, w jaki sposób wykorzystaniem procesora XML może wykryć kodowanie stosowane dla dokumentu przez sprawdzenie pierwszych kilka bajtów w dokumencie.Nie ma możliwości szyfrowania, określony przez aplikację w konflikcie z kodowanie określone w dokumencie.W przypadku dokumentów przekazane jako parametry związane XML jest traktowany jako dane binarne przez SQL Server, są wykonywane nie konwersje i analizatora składni XML można użyć kodowania, określona w dokumencie bez problemów. Jednak dane XML, które jest powiązane jako WSTR, następnie aplikacja musi zapewniać że dokument jest zakodowany w standardzie Unicode.To może pociągać za sobą ładowania dokumentu do modelu DOM Zmienianie kodowania Unicode i szeregowania dokumentu.Jeśli nie można to zrobić, podczas konwersji danych może wystąpić, wynikowy w formacie XML nieprawidłowy lub uszkodzony.

Istnieje również możliwość konfliktu, gdy XML jest określona w literałów.Na przykład nieprawidłowe są następujące:

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 specyficzne dla języka XML w nowym typem danych SQL Server Macierzystego dostawca klient OLE DB. Ponadto dane XML mogą być udostępniane za pośrednictwem istniejących typów baz danych OLE DBTYPE_BYTES, DBTYPE_WSTR, DBTYPE_BSTR, DBTYPE_XML, DBTYPE_STR, DBTYPE_VARIANT i DBTYPE_IUNKNOWN.Dane przechowywane w kolumnach typu XML można pobrać z kolumna SQL Server Macierzysta zestaw wierszy dostawca klient OLE DB w następujących formatach:

  • Ciąg tekstowy

  • An ISequentialStream

Uwaga

The SQL Server Native klient OLE DB dostawca does not include a SAX reader, but the ISequentialStream can be easily passed to SAX and DOM objects in MSXML.

ISequentialStream powinien być używany do pobierania dużych dokumentów XML użycia.Te same techniki używane w przypadku innych typów dużą wartość mają również zastosowanie do formatu XML.Aby uzyskać więcej informacji zobaczZa pomocą dużych typy wartości.

Dane przechowywane w kolumnach typu XML w zestawu zestaw wierszy można również pobrać, wstawiony lub zaktualizować przez aplikację za pośrednictwem interfejsów zwykle takie jak IRow::GetColumns, IRowChange::SetColumns, and ICommand::wykonać.Podobnie przypadek pobierania, program aplikacji może zostać przekazany ciąg tekstowy lub ISequentialStream to the SQL Server Macierzystego dostawca klient OLE DB.

Uwaga

Wysyłanie danych XML w formacie ciąg za pomocą ISequentialStream interfejs, należy uzyskać ISequentialStream określając DBTYPE_IUNKNOWN i ustawić jego pObject argument na wartość zerową w wiązaniu.

Jeżeli pobierane dane XML jest obcinana do wartości z powodu buforu konsumenta, jest za mały, długość mogą być zwracane jako 0xffffffff, co oznacza, że długość jest nieznany.Jest to zgodne z jej wykonanie jako typ danych, które są przesyłane strumieniowo do klient bez wysyłania informacji o długości niższy od założonego rzeczywiste dane.W niektórych przypadkach rzeczywistej długości mogą być zwracane, gdy dostawca ma takich jak buforowane wartości całkowitej IRowset::GetData i gdy jest wykonywana konwersja danych.

Dane XML, wysłane do programu SQL Server jest traktowana jako dane binarne przez serwer.To zapobiega każdej konwersji występujących i umożliwia analizator składni XML do automatycznego wykrywać Kodowanie XML.Dzięki temu szerszego zakres XML dokumentów (na przykład te zakodowane w UTF-8) ma być akceptowane jako dane wejściowe SQL Server.

Jeśli dane wejściowe XML jest powiązana jako DBTYPE_WSTR, aplikacja musi zapewnić, jest on już Unicode zakodowane w celu uniknięcia możliwości uszkodzenia przez niepożądane danych podczas 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 Serverxml data type.

Typ danych

Z serwerem

XML

Z serwerem

XML inny niż

Z serwera

XML

Z serwera

XML inny niż

DBTYPE_XML

Przekazywanie6,7

Błąd1

OK11, 6

Błąd8

DBTYPE_BYTES

Przekazywanie6,7

NIE DOTYCZY2

OK11, 6

NIE DOTYCZY2

DBTYPE_WSTR

Przekazywanie6,10

NIE DOTYCZY2

OK4, 6, 12

NIE DOTYCZY2

DBTYPE_BSTR

Przekazywanie6,10

NIE DOTYCZY2

OK 3

NIE DOTYCZY2

DBTYPE_STR

OK6, 9, 10

NIE DOTYCZY2

OK5, 6, 12

NIE DOTYCZY2

DBTYPE_IUNKNOWN

Strumień bajtów za pomocą ISequentialStream7

NIE DOTYCZY2

Strumień bajtów za pomocą ISequentialStream11

NIE DOTYCZY2

DBTYPE_VARIANT (VT_UI1 | VT_ARRAY)

Przekazywanie6,7

NIE DOTYCZY2

NIE DOTYCZY

NIE DOTYCZY2

DBTYPE_VARIANT (VT_BSTR)

Przekazywanie6,10

NIE DOTYCZY2

OK 3

NIE DOTYCZY2

1Jeśli na serwerze innym niż DBTYPE_XML jest określany za pomocą ICommandWithParameters::SetParameterInfo oraz typ dostępu jest DBTYPE_XML, wystąpi błąd, gdy jest wykonywane w instrukcja (DB_E_ERRORSOCCURRED, stan parametru jest DBSTATUS_E_BADACCESSOR); w przeciwnym razie dane są przesyłane do serwera, ale serwer zwraca błąd wskazujący, że istnieje niejawna konwersja z pliku XML z typem danych parametru.

2Poza zakres tego tematu.

3Format jest UTF-16, Brak znacznika kolejności bye (BOM), bez określenia kodowania, nie zakończenia wartości null.

4Format jest UTF-16, nie BOM bez określenia kodowania, wygaśnięcie wartości null.

5Format jest zakodowana strona kodowa klient z zerową terminator znaki wielobajtowe.Konwersja z serwera dostarczony Unicode może spowodować uszkodzenie danych tak tego wiązanie jest zdecydowanie zalecane.

6BY_REF mogą być używane.

7UTF-16 danych musi zaczynać się od BOM-U.Jeśli nie, kodowania mogą nie być poprawnie rozpoznawane przez serwer.

8Sprawdzanie poprawności można Dispose na utworzenie metoda dostępu lub na pobieranie czas.Błąd jest DB_E_ERRORSOCCURRED stan DBBINDSTATUS_UNSUPPORTEDCONVERSION wiązania.

9Dane są zamieniane na Unicode przy użyciu strony kodowej klient przed wysłaniem do serwera.Jeśli kodowanie dokumentu nie pasuje do strony kodowej klient, może to doprowadzić do uszkodzenie danych, więc to wiązanie jest zdecydowanie odradzane.

10BOM-U jest zawsze dodawana do danych wysyłanych do serwera.Jeśli dane są już uruchomione z BOM-U, w efekcie dwóch BOM na początku buforu.Serwer używa pierwszego BOM-U, aby rozpoznać kodowanie jako UTF-16 i odrzuca je.Drugi BOM jest interpretowana jako znak spacji nierozdzielającej szerokości zera.

11Format jest UTF-16, bez określenia kodowania, BOM-U jest dodawany do dane otrzymane z serwera.Jeśli serwer zwraca ciąg pusty, BOM-U nadal są zwracane do aplikacji.Jeśli długość buforu jest nieparzysta liczba bajtów, dane są poprawnie obcięte.Jeśli cała wartość jest zwracana w fragmentów, może być połączenie do reconstitute poprawnej wartości.

12Jeśli długość buforu jest mniej niż dwa znaki — oznacza to, mało miejsca na wartości null zakończenia--jest zgłaszany błąd przepełnienia.

Uwaga

Dane nie są zwracane dla wartości NULL XML.

Standardu XML wymaga XML, aby rozpocząć znacznik porządku bajtów (BOM), kod UTF-16 znaku 0xFEFF kodowania UTF-16.Podczas pracy z powiązaniami WSTR i BSTR, SQL Server Macierzysty klient nie wymagają ani nie dodawać BOM-U jako kodowania jest implikowane przez wiązanie. Pracując w bajtach, XML lub IUNKNOWN powiązań, opcje renderowania jest zapewnienie uproszczenia w sprawach związanych z innymi procesory XML i systemy przechowywania.W tym przypadek BOM-U powinny być obecnie z UTF-16 kodowane XML, a aplikacji należy nie zainteresowanych z rzeczywistym kodowaniem, ponieważ większość procesory XML (w tym programu SQL Server) deduces kodowania według kilku pierwszych bajtów wartość inspekcji.Otrzymane od danych XML SQL Server Macierzysta klient przy użyciu bajtach, XML lub IUNKNOWN powiązania zawsze jest zakodowany w formacie UTF-16 z BOM-U i bez deklaracja kodowania osadzone.

Podczas konwersji danych dostarczanych przez OLE DB podstawowych usług ()IDataConvert) nie są stosowane do TYPE_XML DB.

Sprawdzanie poprawności jest wykonywane, gdy dane są przesyłane do serwera.Sprawdzanie poprawności po stronie klient i kodowania zmiany powinny być traktowane przez daną aplikację i zaleca się że nie przetwarza dane XML bezpośrednio, ale zamiast tego należy użyć modelu DOM lub SAX czytnik do przetworzenia go.

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

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

DBTYPE_IUNKNOWN jest obsługiwane wią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.

Dodawanie zestawu zestaw wierszy DB OLE i zmian

SQL Server Dodaje nowe wartości lub zmienia się do wielu podstawowych OLE macierzystym klient DB schematu zestawów wierszy.

KOLUMN i wierszy schemat PROCEDURE_PARAMETERS

Dodatki do wierszy schematu COLUMNS i PROCEDURE_PARAMETERS zawierać następujące kolumny.

Nazwa kolumna

Typ

Description

SS_XML_SCHEMACOLLECTION_CATALOGNAME

DBTYPE_WSTR

Nazwa katalogu, w której zdefiniowane jest kolekcja schematu XML.Wartość NULL dla XML inny niż kolumna lub kolumny un-typed XML.

SS_XML_SCHEMACOLLECTION_SCHEMANAME

DBTYPE_WSTR

Nazwa schematu, w której zdefiniowane jest kolekcja schematu XML.Wartość NULL dla XML inny niż kolumna lub kolumny un-typed XML.

SS_XML_SCHEMACOLLECTIONNAME

DBTYPE_WSTR

Nazwa kolekcja schematu XML.Wartość NULL dla XML inny niż kolumna lub kolumny un-typed XML.

PROVIDER_TYPES zestaw wierszy schematu

W zestawie zestaw wierszy schematu PROVIDER_TYPES COLUMN_SIZE wartość 0 dla XML typu danych, a DATA_TYPE DBTYPE_XML.

SS_XMLSCHEMA zestaw wierszy schematu

Nowy zestaw zestaw wierszy schematu SS_XMLSCHEMA jest wprowadzany dla klientów w celu pobrania informacji o schemacie XML.Zestaw wierszy SS_XMLSCHEMA zawiera następujące kolumny.

Nazwa kolumna

Typ

Description

SCHEMACOLLECTION_CATALOGNAME

DBTYPE_WSTR

Katalog kolekcja XML należy.

SCHEMACOLLECTION_SCHEMANAME

DBTYPE_WSTR

Schemat kolekcja XML należy.

SCHEMACOLLECTIONNAME

DBTYPE_WSTR

Nazwa XML kolekcja schematu dla wpisywanych kolumn XML, innej wartości NULL.

TARGETNAMESPACEURI

DBTYPE_WSTR

Obszar nazw miejsce docelowe schematu XML.

SCHEMACONTENT

DBTYPE_WSTR

Zawartość schematu XML.

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

IDENTYFIKATOR GUID

Liczba ograniczeń

Ograniczone kolumn

DBSCHEMA_XML_COLLECTIONS

4

SCHEMACOLLECTION_CATALOGNAME

SCHEMACOLLECTION_SCHEMANAME

SCHEMACOLLECTIONNAME

TARGETNAMESPACEURI

Ustawianie właściwość DB OLE, dodatki i zmiany

SQL Server Dodaje nowe wartości lub zmienia się do wielu podstawowych baz danych OLE właściwość zestawów macierzystym klient.

Do zestaw właściwość DBPROPSET_SQLSERVERPARAMETER

Do obsługi XML typu za pomocą OLE DB, SQL Server Klient macierzystym implementuje nowego zestaw właściwość DBPROPSET_SQLSERVERPARAMETER, który zawiera następujące wartości.

Imię i nazwisko

Typ

Description

SSPROP_PARAM_XML_SCHEMACOLLECTION_CATALOGNAME

DBTYPE_WSTR

Nazwa katalogu (Baza danych), w której zdefiniowane jest kolekcja schematu XML.Część identyfikatora nazwę trzech części SQL.

SSPROP_PARAM_XML_SCHEMACOLLECTION_SCHEMANAME

DBTYPE_WSTR

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

SSPROP_PARAM_XML_SCHEMACOLLECTIONNAME

DBTYPE_WSTR

Nazwa kolekcja schematu XML w katalogu część SQL 3 - Identyfikator nazwę strony.

Do zestaw właściwość DBPROPSET_SQLSERVERCOLUMN

Aby obsługiwać tworzenie tabel w ITableDefinition interfejsSQL Server Klient macierzystym dodaje trzy nowe kolumny DBPROPSET_SQLSERVERCOLUMN zestaw właściwość.

Imię i nazwisko

Typ

Description

SSPROP_COL_XML_SCHEMACOLLECTION_CATALOGNAME

VT_BSTR

Wpisywanych kolumn XML ta właściwość jest ciąg określający nazwę katalogu, w której przechowywany jest schemat XML.Dla pozostałych kolumna typu właściwość ta zwraca pusty ciąg.

SSPROP_COL_XML_SCHEMACOLLECTION_SCHEMANAME

VT_BSTR

Dla wpisywanych kolumn XML ta właściwość jest ciąg znaków określający nazwę schematu XML, który definiuje się w tej kolumnie.

SSPROP_COL_XML_SCHEMACOLLECTIONNAME

VT_BSTR

Dla wpisywanych kolumn XML ta właściwość jest ciąg określający nazwę schematu, określające wartość kolekcja schematu XML.

Jak wartości SSPROP_PARAM wszystkie te właściwości są opcjonalne i domyślnie na wartości puste.SSPROP_COL_XML_SCHEMACOLLECTION_CATALOGNAME i SSPROP_COL_XML_SCHEMACOLLECTION_SCHEMANAME może być tylko określone SSPROP_COL_XML_SCHEMACOLLECTIONNAME został określony.Przy przekazywaniu XML do serwera, jeśli wartości te są uwzględniane są sprawdzane istnienia (ważność) w bieżącej bazie danych oraz wystąpienie danych jest sprawdzany na podstawie schematu.We wszystkich przypadkach ważne są wszystkie puste lub wszystkie wypełnione.

Dodawanie interfejs DB OLE i zmian

SQL Server Dodaje nowe wartości lub zmienia się do wielu podstawowych interfejsy OLE DB macierzystym klient.

Interfejs ISSCommandWithParameters

Do obsługi XML typu za pomocą OLE DB, SQL Server Klient macierzystym implementuje wiele zmian w tym dodatku ISSCommandWithParameters interfejs.Ten nowy interfejs dziedziczy z interfejsem OLE DB podstawowe ICommandWithParameters.Oprócz trzech metod dziedziczone ICommandWithParameters; GetParameterInfo, MapParameterNames, and SetParameterInfo; ISSCommandWithParameters przewidujeGetParameterProperties and SetParameterProperties metody, które są używane do obsługi typów danych określonego serwera.

Uwaga

The ISSCommandWithParameters interfejs also makes use of the new SSPARAMPROPS structure.

Interfejs IColumnsRowset

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

Nazwa kolumna

Typ

Description

DBCOLUMN_SS_XML_SCHEMACOLLECTION_CATALOGNAME

DBTYPE_WSTR

Katalog kolekcja schematu XML, do której należy ta

W przeciwnym razie NULL.

DBCOLUMN_SS_XML_SCHEMACOLLECTION_SCHEMANAME

DBTYPE_WSTR

Należy schematu kolekcja schematu XML.W przeciwnym razie NULL.

DBCOLUMN_SS_XML_SCHEMACOLLECTIONNAME

DBTYPE_WSTR

Nazwa kolekcja schematu XML dla wpisywanych kolumna XML, innej wartości NULL.

interfejs IRowset

Wystąpienie XML w kolumna XML są pobierane za pośrednictwem IRowset::GetData metoda.W zależności od tego, wiązanie określone przez klient, można pobrać wystąpienie XML jako DBTYPE_BSTR, DBTYPE_WSTR, DBTYPE_VARIANT, DBTYPE_XML, DBTYPE_STR, DBTYPE_BYTES lub DBTYPE_IUNKNOWN za pośrednictwem interfejs.Jeśli DBTYPE_BSTR, DBTYPE_WSTR lub DBTYPE_VARIANT konsumenta, konwertuje dostawca XML wystąpienie użytkownika zażądał typu i umieszcza je w lokalizacji określonej w odpowiednich wiązanie.

Jeżeli konsument określa DBTYPE_IUNKNOWN i ustawia pObject argument na wartość NULL lub zestawy pObject Zwraca argument IID_ISequentialStream, dostawca ISequentialStream interfejs do konsumenta, dzięki czemu konsumenta można kierować strumienia danych XML z kolumna.ISequentialStream zwraca dane XML jako strumień znaków Unicode.

Kiedy zwracać wartość XML powiązana DBTYPE_IUNKNOWN, dostawca zgłasza wartość rozmiaru sizeof (IUnknown *). Należy zauważyć, że jest to zgodne z podejście brać pod uwagę przy kolumna jest powiązany DBTYPE_IUnknown lub DBTYPE_IDISPATCH oraz DBTYPE_IUNKNOWN/ISequentialStream, gdy nie można określić rozmiar kolumna dokładnie.

Interfejs IRowsetChange

Konsument może aktualizować XML na dwa sposoby wystąpienie kolumna.Pierwszy z nich jest przez obiekt magazynu ISequentialStream utworzone przez dostawca.Konsument może wywołać ISequentialStream::Write metoda bezpośrednio aktualizować wystąpienie XML zwrócone przez dostawca.

Druga metoda jest za pośrednictwem IRowsetChange::SetData or IRowsetChange::InsertRow metody.W ten sposób instancję XML w buforze użytkownika może być określony w powiązaniu z typem DBTYPE_BSTR, DBTYPE_WSTR, DBTYPE_VARIANT, DBTYPE_XML lub DBTYPE_IUNKNOWN.

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

przypadek braku DBTYPE_IUNKNOWN/ISequentialStream, jeżeli konsument nie określono żadnych obiektów składowania konsument musi utworzyć ISequentialStream obiektu z góry powiązać dokumentu XML z obiektem, a następnie przekazać obiektu do dostawca za pomocą IRowsetChange::SetData metoda.Konsument może również utworzyć przechowywania obiektów, ustaw argument pObject IID_ISequentialStream, tworzenie ISequentialStream obiekt i następnie przebiegu ISequentialStream obiektuIRowsetChange::SetData metoda.W obu przypadkach dostawca może pobrać obiektu XML za pośrednictwem ISequentialStream obiektów i włóż ją do odpowiednich kolumn.

Interfejs IRowsetUpdate

IRowsetUpdate interfejs zapewnia funkcje opóźnione aktualizacje.Dane udostępniane zestawów wierszy nie są dostępne na innych transakcji do czasu wywołania konsumenta IRowsetUpdate:Update metoda.

Interfejs IRowsetFind

The IRowsetFind::FindNextRow metoda does not work with the xml data type.Kiedy IRowsetFind::FindNextRow nazywa się a hAccessor argument określa kolumna DBTYPE_XML, zwracana jest DB_E_BADBINDINFO. Dzieje się tak niezależnie od typu kolumna, które są przeszukiwane są.Dla dowolnego innego typu wiązania FindNextRow nie działa z DB_E_BADCOMPAREOP, jeśli kolumna ma być przeszukiwany jest XML typ danych.

Program SQL Server macierzysty sterownik ODBC klient

W SQL Server Macierzysty sterownik ODBC klient, liczbę zmian wprowadzono różne funkcje do obsługi XML typ danych.

SQLColAttribute

The SQLColAttribute funkcja has three new pole identifiers, including SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME, SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME, and SQL_CA_SS _XML_SCHEMACOLLECTION_NAME.

The SQL Server Native klient ODBC driver reports SQL_SS_LENGTH_UNLIMITED for the SQL_DESC_DISPLAY_SIZE and SQL_DESC_LENGTH columns.

SQLColumns

The SQLColumns funkcja has three new columns including SS_XML_SCHEMACOLLECTION_CATALOG_NAME, SS_XML_SCHEMACOLLECTION_SCHEMA_NAME, and SS_XML_SCHEMACOLLECTION_NAME.Istniejącą kolumna TYPE_NAME służy do wskazywania nazwy typu XML i DATA_TYPE kolumna typu XML lub parametr jest SQL_SS_XML.

The SQL Server Native klient ODBC driver reports SQL_SS_LENGTH_UNLIMITED for the COLUMN_SIZE and CHAR_OCTET_LENGTH values.

SQLDescribeCol

The SQL Server Native klient ODBC driver reports SQL_SS_LENGTH_UNLIMITED when the kolumna size cannot be determined in the SQLDescribeCol funkcja.

SQLGetTypeInfo

The SQL Server Native klient ODBC driver reports SQL_SS_LENGTH_UNLIMITED as the maximum COLUMN_SIZE for the xml data type in the SQLGetTypeInfo funkcja.

SQLProcedureColumns

The SQLProcedureColumns funkcja has the same kolumna additions as the SQLColumns funkcja.

The SQL Server Native klient ODBC driver reports SQL_SS_LENGTH_UNLIMITED as the maximum COLUMN_SIZE for the xml data type.

Obsługiwane Conversions

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

  • SQL_C_WCHAR: Format jest UTF-16, Brak znacznika kolejności bajtów (BOM), wygaśnięcie wartości null.

  • SQL_C_BINARY: Format jest UTF-16, nie zakończenia wartości null. BOM-U jest dodawany do dane otrzymane z serwera.Jeśli serwer zwraca ciąg pusty BOM-U nadal są zwracane do aplikacji.Długość buforu jest nieparzysta liczba bajtów poprawnie zaokrąglane ise danych.Tak Jeśli cała wartość jest zwracana w fragmentów one mogą być łączone, by re-constitute poprawnej wartości

  • SQL_C_CHAR: Format jest zakodowana strona kodowa klient z zerową zakończenie znaki wielobajtowe. Konwersja z serwera podany UTF-16 może spowodować uszkodzenie danych, to wiązanie jest zdecydowanie zalecane.

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

  • SQL_C_WCHAR: BOM-U jest zawsze dodawana, aby dane przesyłane do serwera. Jeśli dane są już uruchomione z BOM-U, w efekcie dwóch BOM na początku buforu.Serwer używa pierwszego BOM rozpoznać kodowanie jako UTF-16, a następnie odrzucić je.Drugi BOM jest interpretowana jako znak spacji nierozdzielającej szerokości zera.

  • SQL_C_BINARY: Konwersja nie jest wykonywane, a dane są przekazywane do serwera „ tak jak jest. „ UTF-16 danych musi zaczynać się od BOM, jeśli nie, kodowania mogą nie być poprawnie rozpoznawane przez serwer.

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

Standardu XML wymaga XML, aby rozpocząć znacznik porządku bajtów (BOM), kod UTF-16 znaku 0xFEFF kodowania UTF-16.Podczas pracy z wiązanie SQL_C_BINARY, SQL Server Macierzysty klient nie wymagają ani nie dodawać BOM, jak kodowanie jest implikowane przez wiązanie. Opcje renderowania jest zapewnienie uproszczenia w sprawach związanych z innymi procesory XML i systemy przechowywania.W tym przypadek BOM-U powinny być obecne w formacie UTF-16 kodowane XML, a aplikacji nie muszą być danego z rzeczywistym kodowaniem, ponieważ większość procesory XML (w tym SQL Server) wywnioskowanie kodowania według kilku pierwszych bajtów wartość inspekcji. Otrzymane od danych XML SQL Server Macierzysta klient przy użyciu SQL_C_BINARY powiązania zawsze są zakodowane w UTF-16 z BOM-U i bez deklaracja kodowania osadzone.