Büyük CLR kullanıcı tanımlı türler (OLE DB)
Bu konuda OLE DB değişiklikleri açıklanır. SQL Server Büyük ortak dil çalışma zamanı (CLR) kullanıcı tanımlı türler (UDTs) desteklemek için yerel (istemci).
Daha fazla bilgi için büyük bir CLR UDTs desteği hakkında SQL Server Yerel istemci için bkz: Büyük CLR kullanıcı tanımlı türler.
Veri Biçimlendir
SQL Server Yerel istemci kullanan ~ 0, sınırsız sayıda boyutu büyük nesne (LOB) türleri için değerler uzunluğunu gösterir.Ile başlayan SQL Server 2008, ~ 0 8.000 bayttan daha büyük boyutlu bir CLR UDTs boyutunu da temsil eder.
Aşağıdaki tabloda, Parametreler ve satır kümeleri veri türü eşleştirme gösterir:
SQL Server veri türü |
OLE DB veri türü |
Bellek yerleşimi |
Değer |
---|---|---|---|
clr udt |
dbtype_udt |
BYTE [] (bayt dizesi) |
132 (oledb.h) |
UDT değerleri bayt dizi olarak gösterilir.Dönüşümler ve onaltılık dizeleri desteklenir.Hazır bilgi değerleri, "0 x" içeren hex dizesi olarak temsil edilir.Bir onaltılık dize 16 tabanı ikili verilerde metinsel gösterimidir.Bir sunucu türü dönüştürme örnektir varbinary(10) için DBTYPE_STR, onaltılı karakterden oluşan her çift, tek bir bayt burada gösterir 20 karakter gösterimi hangi oluşur.
Parametre özellikleri
DBPROPküme_SQLSERVERPARAMETER özelliği küme UDTs OLE DB üzerinden destekler.Daha fazla bilgi için bkz:Kullanıcı tanımlı türleri'ni kullanma.
Sütun Özellikleri
DBPROPküme_SQLSERVERCOLUMN özelliği küme OLE DB üzerinden tabloların oluşturulmasını destekler.Daha fazla bilgi için bkz:Kullanıcı tanımlı türleri'ni kullanma.
Veri türü eşleştirme ITableDefinition::CreateTable içinde
Aşağıdaki bilgiler kullanılır DBCOLUMNDESC yapılar tarafından kullanılan ITableDefinition::CreateTable ne zaman UDT sütunları olması gerekir:
OLE DB veri () yazın...wType) |
pwszTypeName |
SQL Server veri türü |
rgPropertySets |
---|---|---|---|
dbtype_udt |
Yoksayıldı |
udt |
DBPROPküme_SQLSERVERCOLUMN özellik içermeli küme. |
ICommandWithParameters::GetParameterInfo
Bilgi DBPARAMINFO yapısında döndürdü. prgParamInfo aşağıdaki gibidir:
Parametre türü |
wType |
ulParamSize |
bPrecision |
bScale |
dwFlags dbparamflags_islong |
---|---|---|---|---|---|
dbtype_udt (uzunluğunun daha az veya ona eşit 8.000 bayt) |
"DBTYPE_UDT" |
n |
tanımlanmamış |
tanımlanmamış |
Temizle |
dbtype_udt (uzunluğu 8.000 bayttan büyük) |
"DBTYPE_UDT" |
~0 |
tanımlanmamış |
tanımlanmamış |
küme |
ICommandWithParameters::SetParameterInfo
DBPARAMBINDINFO yapısında sağlanan bilgiler aşağıdaki uymalıdır:
Parametre türü |
pwszDataSourceType |
ulParamSize |
bPrecision |
bScale |
dwFlags dbparamflags_islong |
---|---|---|---|---|---|
dbtype_udt (uzunluğunun daha az veya ona eşit 8.000 bayt) |
dbtype_udt |
n |
yoksayıldı |
yoksayıldı |
Parametre DBTYPE_IUNKNOWN kullanarak geçirilecek ise küme olması gerekir. |
dbtype_udt (uzunluğu 8.000 bayttan büyük) |
dbtype_udt |
~0 |
yoksayıldı |
yoksayıldı |
yoksayıldı |
ISSCommandWithParameters
Uygulamalar kullanın. ISSCommandWithParameters Parameter özellikler bölümünde tanımlanan parametre özelliklerini almasını ve.
IColumnsRowset::GetColumnsRowset
Döndürülen sütunlar aşağıdaki gibidir:
Sütun türü |
dbcolumn_type |
dbcolumn_columnsize |
dbcolumn_precision |
dbcolumn_scale |
dbcolumn_flags_islong |
dbcolumns_issearchable |
dbcolumn_octetlength |
---|---|---|---|---|---|---|---|
dbtype_udt (uzunluğunun daha az veya ona eşit 8.000 bayt) |
dbtype_udt |
n |
null |
null |
Temizle |
db_all_except_like |
n |
dbtype_udt (uzunluğu 8.000 bayttan büyük) |
dbtype_udt |
~0 |
null |
null |
küme |
db_all_except_like |
0 |
Aşağıdaki sütunlar için UDTs de tanımlanabilir:
Sütun kimliği |
Tür |
Açıklama |
---|---|---|
dbcolumn_udt_catalogname |
dbtype_wstr |
UDT sütunlar için UDT tanımlandığı kataloğun adı. |
dbcolumn_udt_schemaname |
dbtype_wstr |
UDT sütunlar için UDT tanımlandığı şemasının adını. |
dbcolumn_udt_name |
dbtype_wstr |
UDT sütunlar için UDT, tek parça ad. |
dbcolumn_assembly_typename |
dbtype_wstr |
UDT sütunlar için UDT tam tür adı.derleme türü tam nitelikli adını Type.GetType yöntem kullanarak, bu tür bir nesnenin örneğini sağlar. |
IColumnsInfo::GetColumnInfo
DBCOLUMNINFO yapısında döndürülen bilgiler aşağıdaki gibidir:
Parametre türü |
wType |
ulColumnSize |
bPrecision |
bScale |
dwFlags dbcolumnflags_islong |
---|---|---|---|---|---|
dbtype_udt (uzunluğunun daha az veya ona eşit 8.000 bayt) |
dbtype_udt |
n |
~0 |
~0 |
Temizle |
dbtype_udt (uzunluğu 8.000 bayttan büyük) |
dbtype_udt |
~0 |
~0 |
~0 |
küme |
SÜTUNSAY satır kümesi (Şema Satır kümeleri)
Aşağıdaki sütun değerlerini UDT türlerinde döndürülür:
Sütun türü |
data_type |
column_flags, dbcolumflags_islong |
character_octet_length |
---|---|---|---|
dbtype_udt (uzunluğunun daha az veya ona eşit 8.000 bayt) |
dbtype_udt |
Temizle |
n |
dbtype_udt (uzunluğu 8.000 bayttan büyük) |
dbtype_udt |
küme |
0 |
Aşağıdaki ek sütunlar için UDTs tanımlanmıştır:
Sütun kimliği |
Tür |
Açıklama |
---|---|---|
ss_udt_catalogname |
dbtype_wstr |
UDT sütunlar için UDT tanımlandığı kataloğun adı. |
ss_udt_schemaname |
dbtype_wstr |
UDT sütunlar için UDT tanımlandığı şemasının adını. |
ss_udt_name |
dbtype_wstr |
UDT sütunlar için UDT, tek parça ad. |
ss_assembly_typename |
dbtype_wstr |
UDT sütunlar için UDT tam tür adı budur.derleme türü tam nitelikli adını Type.GetType yöntem kullanarak, bu tür bir nesnenin örneğini sağlar. |
PROCEDURE_PARAMETERS satır kümesi ilgili TYPE_NAME UDT içerir ve DATA_TYPE SÜTUNSAY şema satır kümesi olarak aynı değeri içerir.Aynı ek sütunlar da tanımlanır.
Kullanıcı tanımlı türler PROVIDER_TYPES şema satır kümesi kümesi görüntülenir.
Bağlama ve dönüşümlerini
Veri tpe bağlama |
UDT sunucuya |
Non-UDT sunucuya |
UDT sunucudan |
Non-UDT sunucudan |
---|---|---|---|---|
dbtype_udt |
Desteklenen (5) |
Hata: (1) |
Desteklenen (5) |
Hata: (4) |
dbtype_bytes |
Desteklenen (5) |
n/a |
Desteklenen (5) |
n/a |
dbtype_wstr |
Desteklenen (2), (5) |
n/a |
Desteklenen (3), (5) (6) |
n/a |
dbtype_bstr |
Desteklenen (2), (5) |
n/a |
Desteklenen (3), (5) |
n/a |
dbtype_str |
Desteklenen (2), (5) |
n/a |
Desteklenen (3), (5) |
n/a |
dbtype_iunknown |
Desteklenen (6) |
n/a |
Desteklenen (6) |
n/a |
dbtype_variant (VT_Uİ1 | vt_array) |
Desteklenen (5) |
n/a |
Desteklenen (3), (5) |
n/a |
dbtype_variant (vt_bstr) |
Desteklenen (2), (5) |
n/a |
n/a |
n/a |
Simge anahtar
Simge |
Anlamı |
---|---|
1 |
Bir sunucu dışındaki yazarsanız DBTYPE_UDT ile belirtilir ICommandWithParameters::SetParameterInfo erişimci türü ise, DBTYPE_UDT deyim yürütüldüğünde, hata oluşur.Hata DB_E_ERRORSOCCURRED olacaktır ve parametre durumu DBSTATUS_E_BADACCESSOR olacaktır. Bu parametre için bir UDT olmayan bir sunucu parametresi türü UDT belirtmek için bir hatadır. |
2 |
Veri, onaltılık dize ikili veri dönüştürülür. |
3 |
Veri dizesi onaltılı için ikili veri olarak dönüştürülür. |
4 |
Doğrulama, kullanıldığında oluşabilir. CreateAccessor or GetNextRows.DB_E_ERRORSOCCURRED hatadır.Durum bağlama DBBINDSTATUS_UNSUPPORTEDCONVERSION için küme. |
5 |
BY_REF kullanılabilir. |
6 |
UDT parametreleri, DBBINDING DBTYPE_IUNKNOWN olarak bağlanabilir.bağlama DBTYPE_IUNKNOWN için uygulama verileri kullanarak bir akış olarak işlemek istediğini gösterir ISequentialStream Arabirim. Ne zaman bir tüketici belirtir. wType bir UDT, saklı yordam parametresi türü DBTYPE_IUNKNOWN, bağlama ve karşılık gelen sütun veya çıktı SQL Server yerel istemci döndürür ISequentialStream. Bir girdi parametresi için SQL Server yerel istemci sorgular için ISequentialStream Arabirim. UDT verilerin uzunluğunu büyük UDTs örneğinde DBTYPE_IUNKNOWN bağlantısını kullanırken değil bağlamak seçebilirsiniz.Ancak, uzunluğu için küçük UDTs bağlanmalıdır.Aşağıdakilerden birini veya birkaçını doğruysa DBTYPE_UDT parametre büyük bir UDT belirtilebilir:
Satır verileri için DBTYPE_IUNKNOWN bağlama yalnızca büyük UDTs için izin verilir.sütun büyük UDT türü kullanarak olup bulabilirsiniz IColumnsInfo::GetColumnInfo yöntem bir Rowset veya Command Nesne çubuğundaki IColumnsInfo Arabirim. Aşağıdakilerden birini veya birkaçını doğru DBTYPE_UDT sütun büyük UDT sütun ise:
|
Giriş parametreleri, ancak çıkış parametresi veya sonuçlar için DBTYPE_NULL ve DBTYPE_EMPTY bağlanabilir.Ne zaman, Giriş parametreleri için bağlı, durumu için DBSTATUS_S_ISNULL DBTYPE_NULL veya DBSTATUS_S_DEFAULT DBTYPE_EMPTY için küme olması gerekir.DBTYPE_BYREF, DBTYPE_NULL veya DBTYPE_EMPTY ile kullanılamaz.
DBTYPE_UDT DBTYPE_EMPTY ve DBTYPE_NULL dönüştürülebilir.Ancak, DBTYPE_NULL ve DBTYPE_EMPTY DBTYPE_UDT için dönüştürülemiyor.Bu, DBTYPE_BYTES ile tutarlıdır.ISSCommandWithParameters UDTs parametre olarak işlemek için kullanılır.
OLE DB Çekirdek Hizmetleri () tarafından sağlanan veri dönüştürmeIDataConvert) DBTYPE_UDT için uygun değildir.
Diğer bir bağlamalar desteklenmiyor.
Comparability IRowsetFind için
UDT türlerinde, yalnızca aşağıdaki karşılaştırmaları desteklenir:
eq
ne
YOKSAY
Diğer bir karşılaştırma denenir, DB_E_BADCOMPAREOP döndürdü.
UDTs BCP desteği
UDT değerleri alınan ve yalnızca karakter veya ikili değerler dışarı.
kapalı-Istemci davranışı için UDTs düzey
UDTs türü eşleştirmeyle tabidir kapalı-istemcileri gibi düzey:
Istemci sürüm |
dbtype_udt (uzunluğunun daha az veya ona eşit 8.000 bayt) |
dbtype_udt (uzunluğu 8.000 bayttan büyük) |
---|---|---|
SQL Server 2000 ve öncesi |
varbinary |
resim |
SQL Server 2005 |
udt |
varbinary(max) |
SQL Server 2008 |
udt |
udt |
Ne zaman DataTypeCompatibility(SSPROP_INIT_DATATYPECOMPATIBILITY) olan küme "80", alt düzey istemciler için göründükleri şekilde istemcilerine büyük UDT türleri görüntülenir.