Udostępnij za pośrednictwem


Duże CLR typy zdefiniowane przez użytkownika (ODBC)

W tym temacie omówiono zmiany ODBC w trybie macierzystym klient serwera SQL do obsługi dużych wspólnego języka plików wykonywalnych (CLR) typów zdefiniowanych przez użytkownika (UDTs).

Aby uzyskać więcej informacji na temat obsługi dużych UDTs CLR w SQL Server Native klient zobacz Duże CLR Typy definiowane przez użytkownika.

Format danych

SQL Server Native klient używa SQL_SS_LENGTH_UNLIMITED oznaczający, że rozmiar kolumna jest większy niż 8000 bajtów w przypadku dużych obiektów (LOB).Począwszy od programu SQL Server 2008, tę samą wartość jest używana dla środowiska CLR UDTs podczas ich rozmiar jest większy niż 8000 bajtów.

UDT wartości są reprezentowane w postaci tablic bajtowych.Podczas konwersji z ciągów znaków szesnastkowych i są obsługiwane.Wartości są reprezentowane jako ciąg szesnastkowy z prefiksem "0 x".

W poniższej tabela przedstawiono mapowania typów danych w parametrach i zestawach wyników:

Typ danych programu SQL Server

Typ danych SQL

Wartość

CLR UDT

SQL_SS_UDT

-151 (sqlncli.h)

W poniższej tabela opisano odpowiedniej struktury i typu ODBC C.W istocie, jest CLR UDT varbinary Wpisz dodatkowe metadane.

Typ danych SQL

Układ pamięci

Typ danych c

Wartość (sqlext.h)

SQL_SS_UDT

SQLCHAR *(unsigned char *)

SQL_C_BINARY

SQL_BINARY-(2)

Parametry pola deskryptora

Informacje zwrócone w polach IPD jest następująca:

pole deskryptora

SQL_SS_UDT

(długość mniejsze lub równe do 8000 bajtów)

SQL_SS_UDT

(długości większej niż 8000 bajtów)

SQL_DESC_CASE_SENSITIVE

SQL_FALSE

SQL_FALSE

SQL_DESC_CONCISE_TYPE

SQL_SS_UDT

SQL_SS_UDT

SQL_DESC_DATETIME_INTERVAL_CODE

0

0

SQL_DESC_DATETIME_INTERVAL_PRECISION

n

SQL_SS_LENGTH_UNLIMITED (0)

SQL_DESC_FIXED_PREC_SCALE

SQL_FALSE

SQL_FALSE

SQL_DESC_LENGTH

n

SQL_SS_LENGTH_UNLIMITED (0)

SQL_DESC_LOCAL_TYPE_NAME

"udt"

"udt"

SQL_DESC_OCTET_LENGTH

n

SQL_SS_LENGTH_UNLIMITED (0)

SQL_DESC_PRECISION

n

SQL_SS_LENGTH_UNLIMITED (0)

SQL_DESC_SCALE

0

0

SQL_DESC_TYPE

SQL_SS_UDT

SQL_SS_UDT

SQL_DESC_TYPE_NAME

"udt"

"udt"

SQL_DESC_UNSIGNED

SQL_TRUE

SQL_TRUE

SQL_CA_SS_UDT_CATALOG_NAME

Nazwa wykazu, która zawiera UDT.

Nazwa wykazu, która zawiera UDT.

SQL_CA_SS_UDT_SCHEMA_NAME

Nazwa schematu, który zawiera UDT.

Nazwa schematu zawiera UDT.

SQL_CA_SS_UDT_TYPE_NAME

Nazwa UDT.

Nazwa UDT.

SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME

W pełni kwalifikowana nazwa UDT.

W pełni kwalifikowana nazwa UDT.

Dla parametrów UDT SQL_CA_SS_UDT_TYPE_NAME musi być zawsze zestaw za pośrednictwem SQLzestawDescField.SQL_CA_SS_UDT_CATALOG_NAME i SQL_CA_SS_UDT_SCHEMA_NAME są opcjonalne.

Jeśli UDT jest zdefiniowana w tej samej bazy danych z innego schematu niż tabela, musi być SQL_CA_SS_UDT_SCHEMA_NAME zestaw.

Jeśli UDT jest zdefiniowany w innej bazie danych, niż tabela, należy ustawić SQL_CA_SS_UDT_CATALOG_NAME i SQL_CA_SS_UDT_SCHEMA_NAME.

Jeśli istnieją błędy lub pominięcia w ustawieniach SQL_CA_SS_UDT_TYPE_NAME, SQL_CA_SS_UDT_CATALOG_NAME lub SQL_CA_SS_UDT_SCHEMA_NAME, diagnostyczne rekordu jest generowany z HY000 SQLSTATE i tekst komunikatu właściwe dla serwera.

Wyniki pola deskryptora

Informacje zwrócone w polach IRD jest następująca:

pole deskryptora

SQL_SS_UDT

(długość mniejsze lub równe do 8000 bajtów)

SQL_SS_UDT

(długości większej niż 8000 bajtów)

SQL_DESC_AUTO_UNIQUE_VALUE

SQL_FALSE

SQL_FALSE

SQL_DESC_CASE_SENSITIVE

SQL_FALSE

SQL_FALSE

SQL_DESC_CONCISE_TYPE

SQL_SS_UDT

SQL_SS_UDT

SQL_DESC_DATETIME_INTERVAL_CODE

0

0

SQL_DESC_DATETIME_INTERVAL_PRECISION

n

SQL_SS_LENGTH_UNLIMITED (0)

SQL_DESC_DISPLAY_SIZE

2n

SQL_SS_LENGTH_UNLIMITED (0)

SQL_DESC_FIXED_PREC_SCALE

SQL_FALSE

SQL_FALSE

SQL_DESC_LENGTH

n

SQL_SS_LENGTH_UNLIMITED (0)

SQL_DESC_LITERAL_PREFIX

"0 x"

"0 x"

SQL_DESC_LITERAL_SUFFIX

""

""

SQL_DESC_LOCAL_TYPE_NAME

"udt"

"udt"

SQL_DESC_OCTET_LENGTH

n

SQL_SS_LENGTH_UNLIMITED (0)

SQL_DESC_PRECISION

n

SQL_SS_LENGTH_UNLIMITED (0)

SQL_DESC_SCALE

0

0

SQL_DESC_SEARCHABLE

SQL_PRED_NONE

SQL_PRED_NONE

SQL_DESC_TYPE

SQL_SS_UDT

SQL_SS_UDT

SQL_DESC_TYPE_NAME

"udt"

"udt"

SQL_DESC_UNSIGNED

SQL_TRUE

SQL_TRUE

SQL_CA_SS_UDT_CATALOG_NAME

Nazwa wykazu, która zawiera UDT.

Nazwa wykazu, która zawiera UDT.

SQL_CA_SS_UDT_SCHEMA_NAME

Nazwa schematu, który zawiera UDT.

Nazwa schematu, który zawiera UDT.

SQL_CA_SS_UDT_TYPE_NAME

Nazwa UDT.

Nazwa UDT.

SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME

W pełni kwalifikowana nazwa UDT.

W pełni kwalifikowana nazwa UDT.

kolumna Metadane zwracanych przez SQLkolumnas i SQLProcedurekolumnas (metadane katalog)

Następujące wartości kolumn są zwracane dla UDTs:

Nazwa kolumna

SQL_SS_UDT

(długość mniejsze lub równe do 8000 bajtów)

SQL_SS_UDT

(długości większej niż 8000 bajtów)

DATA_TYPE

SQL_SS_UDT

SQL_SS_UDT

TYPE_NAME

Nazwa UDT.

Nazwa UDT.

COLUMN_SIZE

n

SQL_SS_LENGTH_UNLIMITED (0)

BUFFER_LENGTH

n

SQL_SS_LENGTH_UNLIMITED (0)

DECIMAL_DIGITS

WARTOŚCI NULL

WARTOŚCI NULL

SQL_DATA_TYPE

SQL_SS_UDT

SQL_SS_UDT

SQL_DATETIME_SUB

WARTOŚCI NULL

WARTOŚCI NULL

CHAR_OCTET_LENGTH

n

SQL_SS_LENGTH_UNLIMITED (0)

SS_UDT_CATALOG_NAME

Nazwa wykazu, która zawiera UDT.

Nazwa wykazu, która zawiera UDT.

SS_UDT_SCHEMA_NAME

Nazwa schematu, który zawiera UDT.

Nazwa schematu, który zawiera UDT.

SS_UDT_ASSEMBLY_TYPE_NAME

W pełni kwalifikowana nazwa UDT.

W pełni kwalifikowana nazwa UDT.

Ostatnie trzy kolumny są specyficzne dla sterownika kolumn.Są one dodawane po każdej kolumny zdefiniowane przez ODBC, ale przed żadnych istniejących kolumn specyficzne dla sterownika zestaw wyników SQLColumns lub SQLProcedureColumns.

Wiersze nie są zwracane przez SQLGetTypeInfo, dla poszczególnych UDTs lub dla typu rodzajowego "udt".

Powiązania i Conversions

Obsługiwane podczas konwersji z SQL do C typy danych są następujące:

Konwersja z i do:

SQL_SS_UDT

SQL_C_WCHAR

Obsługiwane *

SQL_C_BINARY

Obsługiwane

SQL_C_CHAR

Obsługiwane *

* Dane binarne jest konwertowany na ciąg szesnastkowy.

Obsługiwane konwersje od C do typy danych SQL są następujące:

Konwersja z i do:

SQL_SS_UDT

SQL_C_WCHAR

Obsługiwane *

SQL_C_BINARY

Obsługiwane

SQL_C_CHAR

Obsługiwane *

* Występuje ciąg szesnastkowy do konwersji danych binarnych.

Obsługa typu sql_variant UDTs

UDTs nie są obsługiwane w kolumnach typu SQL_VARIANT.

Obsługa UDTs BCP

UDTs wartości mogą być importowane i eksportowane tylko jako znak lub wartości binarnych.

Zachowania klientów niższych poziomów UDTs

UDTs podlegają mapowania typu z niedziałający-poziom klientów, w następujący sposób:

Wersja serwera

SQL_SS_UDT

(długość mniejsze lub równe do 8000 bajtów)

SQL_SS_UDT

(długości większej niż 8000 bajtów)

SQL Server 2000

varbinary

image

SQL Server 2005

UDT

varbinary(max)

SQL Server 2008

UDT

UDT

Obsługa dużych CLR UDTs funkcje ODBC

W tej sekcji omówiono zmiany funkcji ODBC dla programu SQL Server Native klient do obsługi dużych UDTs środowiska CLR.

SQLBindCol

Wartości kolumna wynik UDT są konwertowane z SQL C typy danych jako zgodnie z opisem w sekcji "Powiązania i Conversions" we wcześniejszej części tego tematu.

SQLBindParameter

Wartości wymagane dla UDTs są następujące:

Typ danych SQL

Parametertype

ColumnSizePtr

DecimalDigitsPtr

SQL_SS_UDT

(długość mniejsze lub równe do 8000 bajtów)

SQL_SS_UDT

n

0

SQL_SS_UDT

(długości większej niż 8000 bajtów)

SQL_SS_UDT

SQL_SS_LENGTH_UNLIMITED (0)

0

SQLColAttribute

Wartości zwracane dla UDTs są opisane w sekcji "Deskryptora pola dla wyniki" we wcześniejszej części tego tematu.

SQLColumns

Wartości zwracane dla UDTs są zgodnie z opisem w sekcji "kolumna metadanych zwrócona przez SQLColumns i SQLProcedureColumns (katalog metadane)", we wcześniejszej części tego tematu.

SQLDescribeCol

Wartości zwracane dla UDTs są następujące:

Typ danych SQL

DataTypePtr

ColumnSizePtr

DecimalDigitsPtr

SQL_SS_UDT

(długość mniejsze lub równe do 8000 bajtów)

SQL_SS_UDT

n

0

SQL_SS_UDT

(długości większej niż 8000 bajtów)

SQL_SS_UDT

SQL_SS_LENGTH_UNLIMITED (0)

0

SQLDescribeParam

Wartości zwracane dla UDTs są następujące:

Typ danych SQL

DataTypePtr

ColumnSizePtr

DecimalDigitsPtr

SQL_SS_UDT

(długość mniejsze lub równe do 8000 bajtów)

SQL_SS_UDT

n

0

SQL_SS_UDT

(długości większej niż 8000 bajtów)

SQL_SS_UDT

SQL_SS_LENGTH_UNLIMITED (0)

0

SQLFetch

Wartości kolumna wynik UDT są konwertowane z SQL C typy danych jako zgodnie z opisem w sekcji "Powiązania i Conversions" we wcześniejszej części tego tematu.

SQLFetchScroll

Wartości kolumna wynik UDT są konwertowane z SQL C typy danych jako zgodnie z opisem w sekcji "Powiązania i Conversions" we wcześniejszej części tego tematu.

SQLGetData

Wartości kolumna wynik UDT są konwertowane z SQL C typy danych jako zgodnie z opisem w sekcji "Powiązania i Conversions" we wcześniejszej części tego tematu.

SQLGetDescField

Dostępnych z nowych typów pól deskryptora opisano w temacie "Deskryptora pola dla parametrów" i "Deskryptora pola dla wyniki" sekcje, we wcześniejszej części tego tematu.

SQLGetDescRec

Wartości zwracane dla UDTs są następujące:

Typ danych SQL

Typ

Podtyp

Długość

Precyzja

Skala

SQL_SS_UDT

(długość mniejsze lub równe do 8000 bajtów)

SQL_SS_UDT

0

n

n

0

SQL_SS_UDT

(długości większej niż 8000 bajtów)

SQL_SS_UDT

0

SQL_SS_LENGTH_UNLIMITED (0)

SQL_SS_LENGTH_UNLIMITED (0)

0

SQLGetTypeInfo

Wartości zwracane dla UDTs są zgodnie z opisem w sekcji "Metadanych zwracanych przez SQLColumns i SQLProcedureColumns (katalog metadane)" we wcześniejszej części tego tematu.

SQLProcedureColumns

Wartości zwracane dla UDTs są zgodnie z opisem w sekcji "Metadanych zwracanych przez SQLColumns i SQLProcedureColumns (katalog metadane)" we wcześniejszej części tego tematu.

SQLPutData

Wartości parametrów UDT są konwertowane z C na typy danych SQL jako zgodnie z opisem w sekcji "Powiązania i Conversions" we wcześniejszej części tego tematu.

SQLSetDescField

Dostępne z nowych typów pole deskryptora opisano w temacie "Deskryptora pola dla parametrów" i "Deskryptora pola dla wyniki" sekcje, we wcześniejszej części tego tematu.

SQLSetDescRec

Wartości dla UDTs dozwolone są następujące:

Typ danych SQL

Typ

Podtyp

Długość

Precyzja

Skala

SQL_SS_UDT

(długość mniejsze lub równe do 8000 bajtów)

SQL_SS_UDT

0

n

n

0

SQL_SS_UDT

(długości większej niż 8000 bajtów)

SQL_SS_UDT

0

SQL_SS_LENGTH_UNLIMITED (0)

SQL_SS_LENGTH_UNLIMITED (0)

0

SQLSpecialColumns

Wartości zwracane w kolumnach DATA_TYPE TYPE_NAME, COLUMN_SIZE, BUFFER_LENGTH i UDTs DECIMAL_DIGTS są zgodnie z opisem w sekcji "Metadanych zwracanych przez SQLColumns i SQLProcedureColumns (katalog metadane)" we wcześniejszej części tego tematu.