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:
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:
|
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.