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.