Büyük clr kullanıcı tanımlı türler (ole db)

ole db içinde değişiklikler bu konuda açıklanır SQL Serverbüyük ortak dil çalışma zamanı (clr) kullanıcı tanımlı türler (UDTs) desteklemek için yerel istemci.

Büyük clr UDTs desteği hakkında daha fazla bilgi için SQL ServerYerel bkz: istemci, Büyük clr kullanıcı tanımlı türler. Bir örnek için bkz: Büyük clr UDTs (ole db) kullanma.

Veri formatı

SQL ServerYerel istemci kullanır ~ 0 sınırsız boyutu büyük nesne (lob) türleri için değerler uzunluğunu temsil edecek. ~ 0 da 8.000 bayttan büyük clr UDTs boyutunu gösterir.

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 düzeni

Değer

CLR UDT

DBTYPE_UDT

byte [] (bayt dizesi)

132 (oledb.h)

udt değerleri bayt dizileri temsil edilir. Dönüşümler ve gelen onaltılık dizeleri desteklenir. Hazır bilgi değerleri onaltılık dize "0 x" önekine sahip olarak temsil edilir. Bir onaltılık dize ikili veri tabanı 16 metinsel gösterimini olduğunu. Sunucu türü bir dönüştürme bir örnektir varbinary(10)dbtype_str için hangi sonuçları 20 karakter, burada her çift karakter gösterir bir tek baytlık onaltılık gösterimi.

Parametre özellikleri

dbpropset_sqlserverparameter özellik kümesi, ole db üzerinden UDTs destekler. Daha fazla bilgi için, bkz. Kullanıcı tanımlı türler kullanma.

Sütun özellikleri

dbpropset_sqlservercolumn özellik kümesi, ole db üzerinden tabloların oluşturulmasını destekler. Daha fazla bilgi için, bkz. Kullanıcı tanımlı türler kullanma.

ITableDefinition::CreateTable içindeki veri türü eşleştirme

Aşağıdaki bilgileri kullanılan DBCOLUMNDESCyapılar tarafından kullanılan ITableDefinition::CreateTablezaman udt sütunları gerekli:

ole db veri türü (wType)

pwszTypeName

SQL Server veri türü

rgPropertySets

DBTYPE_UDT

Göz ardı

UDT

dbpropset_sqlservercolumn özellik kümesi içermelidir.

ICommandWithParameters::GetParameterInfo

Bilgi döndürülen DBPARAMINFO yapısı prgParamInfo aşağıdaki gibidir:

Parametre türü

wType

ulParamSize

bPrecision

bScale

dwFlagsDBPARAMFLAGS_ISLONG

DBTYPE_UDT

(uzunluğu daha az veya eşit 8.000 bayt)

"DBTYPE_UDT"

n

Tanımsız

Tanımsız

temizlemek

DBTYPE_UDT

(8.000 bayttan büyük uzunluğu)

"DBTYPE_UDT"

~0

Tanımsız

Tanımsız

ayarla

ICommandWithParameters::SetParameterInfo

DBPARAMBINDINFO yapısı içinde sağlanan bilgiler aşağıdaki uymalıdır:

Parametre türü

pwszDataSourceType

ulParamSize

bPrecision

bScale

dwFlagsDBPARAMFLAGS_ISLONG

DBTYPE_UDT

(uzunluğu daha az veya eşit 8.000 bayt)

DBTYPE_UDT

n

göz ardı

göz ardı

DBTYPE_IUNKNOWN kullanarak geçirilen parametre ise ayarlanmalıdır.

DBTYPE_UDT

(8.000 bayttan büyük uzunluğu)

DBTYPE_UDT

~0

göz ardı

göz ardı

göz ardı

ISSCommandWithParameters

Kullanma ISSCommandWithParameters almak ve parametre özellikleri bölümünde tanımlanan parametre özelliklerini ayarlama.

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ğu daha az veya eşit 8.000 bayt)

DBTYPE_UDT

n

NULL

NULL

Açık

DB_ALL_EXCEPT_LIKE

n

DBTYPE_UDT

(8.000 bayttan büyük uzunluğu)

DBTYPE_UDT

~0

NULL

NULL

Ayarla

DB_ALL_EXCEPT_LIKE

0

Aşağıdaki sütunlar UDTs için de tanımlanmıştır:

Sütun tanımlayıcısı

Tür

Açıklama

DBCOLUMN_UDT_CATALOGNAME

DBTYPE_WSTR

udt sütunlar için udt tanımlı katalog adı.

DBCOLUMN_UDT_SCHEMANAME

DBTYPE_WSTR

udt sütunlar için udt tanımlanan şema adı.

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 adı aktarıldığı yöntemini kullanarak bu türde nesne örneğini sağlar.

IColumnsInfo::GetColumnInfo

DBCOLUMNINFO yapısında döndürülen bilgileri aşağıdaki gibidir:

Parametre türü

wType

ulColumnSize

bPrecision

bScale

dwFlags

DBCOLUMNFLAGS_ISLONG

DBTYPE_UDT

(uzunluğu daha az veya eşit 8.000 bayt)

DBTYPE_UDT

n

~0

~0

Açık

DBTYPE_UDT

(8.000 bayttan büyük uzunluğu)

DBTYPE_UDT

~0

~0

~0

Ayarla

SÜTUNSAY satır kümesi (şema satır kümeleri)

Aşağıdaki sütun değerlerini udt türleri döndürülür:

Sütun türü

DATA_TYPE

COLUMN_FLAGS, DBCOLUMFLAGS_ISLONG

CHARACTER_OCTET_LENGTH

DBTYPE_UDT

(uzunluğu daha az veya eşit 8.000 bayt)

DBTYPE_UDT

Açık

n

DBTYPE_UDT

(8.000 bayttan büyük uzunluğu)

DBTYPE_UDT

Ayarla

0

Aşağıdaki ek sütunlar UDTs için tanımlanmıştır:

Sütun tanımlayıcısı

Tür

Açıklama

SS_UDT_CATALOGNAME

DBTYPE_WSTR

udt sütunlar için udt tanımlı katalog adı.

SS_UDT_SCHEMANAME

DBTYPE_WSTR

udt sütunlar için udt tanımlanan şema adı.

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 adı aktarıldığı yöntemini kullanarak bu türde nesne örneğini sağlar.

procedure_parameters satır kümesi ile ilgili data_type SÜTUNSAY şema satır kümesi olarak aynı değerleri ve type_name udt içerir. Aynı ek sütunlar de tanımlanmıştır.

Kullanıcı tanımlı türler PROVIDER_TYPES şema satır kümesi içinde görünmez.

Bağlama ve Dönüşümlerini

Bağlama veri tpe

udt sunucusuna

Non-udt sunucusuna

udt sunucusundan

Non-udt sunucusundan

DBTYPE_UDT

Desteklenen (5)

Hata (1)

Desteklenen (5)

Hata (4)

DBTYPE_BYTES

Desteklenen (5)

Yok

Desteklenen (5)

Yok

DBTYPE_WSTR

Desteklenen (2), (5)

Yok

Desteklenen (3), (5), (6)

Yok

DBTYPE_BSTR

Desteklenen (2), (5)

Yok

Desteklenen (3), (5)

Yok

DBTYPE_STR

Desteklenen (2), (5)

Yok

Desteklenen (3), (5)

Yok

DBTYPE_IUNKNOWN

Desteklenen (6)

Yok

Desteklenen (6)

Yok

DBTYPE_VARIANT (VT_UI1 | VT_ARRAY)

Desteklenen (5).

Yok

Desteklenen (3), (5)

Yok

DBTYPE_VARIANT (VT_BSTR)

Desteklenen (2), (5)

Yok

Yok

Yok

Semboller için anahtar

Simge

Anlamı

1

dbtype_udt ile belirtilenden başka bir sunucu yazarsanız, ICommandWithParameters::SetParameterInfo ve erişimcisi türü dbtype_udt, deyimi yürütüldüğünde bir hata oluşur. Hata db_e_errorsoccurred olacak ve parametresi durum dbstatus_e_badaccessor olacaktır.

Bir parametre türü udt udt değil bir sunucu parametresi için belirtmek için bir hatadır.

2

Verileri onaltılık dize ikili veri dönüştürülür.

3

Veri hex dizesi için ikili veri dönüştürülür.

4

Doğrulama ne zaman kullanarak CreateAccessor ya GetNextRows. db_e_errorsoccurred hatadır. Bağlama durumu DBBINDSTATUS_UNSUPPORTEDCONVERSION için ayarlanır.

5

by_ref kullanılabilir.

6

udt parametreleri olarak dbtype_ıunknown DBBINDING de bağlanabilir. DBTYPE_IUNKNOWN bağlama gösteren uygulamayı kullanarak bir akım olarak verileri işlemek isteyen ISequentialStreamarabirimi. Ne zaman bir tüketici belirtir wTypetürü dbtype_ıunknown, bağlama ve karşılık gelen sütun veya çıkış parametresidir saklı yordam bir udt SQL Server yerel istemci döner ISequentialStream. Giriş parametresi için SQL Server yerel istemci için sorgular için ISequentialStreamarabirimi.

udt veri uzunluğu değil bağlamak, büyük UDTs dbtype_ıunknown bağlama kullanarak seçebilirsiniz. Ancak, uzunluğu, küçük UDTs için bağlanmalıdır. Bir veya daha aşağıdaki doğruysa dbtype_udt parametre büyük bir udt belirtilebilir:

  • ulParamParamSizeolduğunu ~ 0.

  • DBPARAMFLAGS_ISLONG DBPARAMBINDINFO yapı birimi içinde ayarlanır.

DBTYPE_IUNKNOWN bağlama, satır veri, yalnızca bu büyük UDTs için izin verilir. Sen-ebilmek bulmak bir sütun büyük bir udt türü kullanarak olup IColumnsInfo::GetColumnInfoyöntemi bir Rowsetveya Commandnesnesinin IColumnsInfoarabirimi. dbtype_udt sütun büyük udt sütun ise, bir ya da birkaçını doğrudur:

  • DBCOLUMNFLAGS_ISLONG bayrağı ayarlanmış dwFlagsDBCOLUMNINFO yapısı üyesi

  • ulColumnSizeDBCOLUMNINFO üyesidir ~ 0.

dbtype_null ve dbtype_empty çıkış parametreleri veya sonuçları için giriş parametreleri, ancak bağlanabilir. Giriş parametreleri için bağlandığında, durumu DBSTATUS_S_ISNULL için dbtype_null veya dbstatus_s_default için dbtype_empty için ayarlanmalıdır. dbtype_byref, dbtype_null veya dbtype_empty ile kullanılamaz.

dbtype_udt dbtype_empty ve dbtype_null da 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 işlemi için parametre olarak kullanılır.

ole db Çekirdek Hizmetleri tarafından sağlanan veri dönüşümleri (IDataConvert) dbtype_udt için geçerli değildir.

Diğer bir bağlama desteklenmez.

IRowsetFind karşılaştırılabilir

Yalnızca aşağıdaki karşılaştırmaları udt türleri için desteklenir:

  • EQ

  • NE

  • YOKSAY

Diğer bir karşılaştırma çalıştı, db_e_badcompareop döndürülür.

UDTs için bcp desteği

udt değerleri alınan ve yalnızca karakter veya ikili değerler verilebilir.

UDTs için alt düzey istemci davranışı

UDTs aşağı düzey istemciler, türü eşleştirmesi için şunlardır:

İstemci sürümü

DBTYPE_UDT

(uzunluğu daha az veya eşit 8.000 bayt)

DBTYPE_UDT

(8.000 bayttan büyük uzunluğu)

SQL Server 2005

UDT

varbinary(max)

SQL Server 2008 ve sonrası

UDT

UDT

Ne zaman DataTypeCompatibility(SSPROP_INIT_DATATYPECOMPATIBILITY) "80" ayarlanır, büyük udt türleri görünür istemcilere aynı şekilde alt düzey istemciler için göründükleri.

Ayrıca bkz.

Kavramlar

Büyük clr kullanıcı tanımlı türler