Aracılığıyla paylaş


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:

  • ulParamParamSize olan ~ 0.

  • DBPARAMFLAGS_ISLONG DBPARAMBINDINFO yapıda küme.

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:

  • DBCOLUMNFLAGS_ISLONG bayrağı küme dwFlags üye DBCOLUMNINFO yapısı

  • ulColumnSize DBCOLUMNINFO üye ~ 0.

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.