Kullanıcı tanımlı türler kullanma
SQL Server 2005kullanıcı tanımlı türler (UDTs) tanıttı. UDTs genişletmek sql türü sistemi nesneler ve özel veri yapılarını tanıyarak bir SQL Serververitabanı. UDTs birden çok veri türlerini içerebilir ve davranışlar, bunları tek bir oluşan geleneksel diğer veri türlerinden ayırt olabilir SQL Serversistem veri türü. UDTs herhangi biri tarafından desteklenen tüm dilleri kullanılarak tanımlanır.Doğrulanabilir kod üreten net ortak dil çalışma zamanı (clr). Bu içeren Microsoft Visual C#® ve Visual Basic® .NET. Veri alanları ve özellikleri maruz bir.net sınıf veya yapı ve davranış yöntemleri sınıf veya yapı tarafından tanımlanır.
udt sütun tanımı tablonun, bir değişken olarak kullanılabilir bir Transact-SQLtoplu, ya da bir bağımsız değişken olarak bir Transact-SQLişlev veya saklı yordam. UDTs hakkında daha fazla bilgi için bkz: Working with CLR User-defined Types.
SQL Server Native Client OLE DB Sağlayıcısı
SQL ServerYerel istemci ole db sağlayıcısı destekler gibi ikili türleri ile UDTs nesneleri yönetmenizi sağlar meta veri bilgileri UDTs. udt sütunlar dbtype_udt maruz ve onların metaveri çekirdek ole db arabirim üzerinden IColumnRowsetve yeni ISSCommandWithParameters arabirimi.
[!NOT]
IRowsetFind::FindNextRow yöntemi udt veri türü ile çalışmaz. db_e_badcompareop döndürülen udt bir arama sütunu türü olarak kullanılır.
Veri bağlamaları ve Coercions
Aşağıdaki tablo bağlama ve zorlama kullanarak listelenen veri türleri ile oluşan açıklar bir SQL Serverudt. udt sütunlar üzerinden maruz SQL Serveryerel istemci ole db sağlayıcısı olarak dbtype_udt. Kendi tanımlı türleri olarak nesneleri yönetebilirsiniz uygun şema satır kümeleri meta veri alabilirsiniz.
Veri türü |
Sunucuya UDT |
Sunucuya Non-udt |
Sunucudan UDT |
Sunucudan Non-udt |
---|---|---|---|---|
DBTYPE_UDT |
Desteklenen6 |
Hata1 |
Desteklenen6 |
Hata5 |
DBTYPE_BYTES |
Desteklenen6 |
N/A2 |
Desteklenen6 |
N/A2 |
DBTYPE_WSTR |
Desteklenen3,6 |
N/A2 |
Desteklenen4,6 |
N/A2 |
DBTYPE_BSTR |
Desteklenen3,6 |
N/A2 |
Desteklenen4 |
N/A2 |
DBTYPE_STR |
Desteklenen3,6 |
N/A2 |
Desteklenen4,6 |
N/A2 |
DBTYPE_IUNKNOWN |
Desteklenen değil |
N/A2 |
Desteklenen değil |
N/A2 |
DBTYPE_VARIANT (VT_UI1 | VT_ARRAY) |
Desteklenen6 |
N/A2 |
Desteklenen4 |
N/A2 |
DBTYPE_VARIANT (VT_BSTR) |
Desteklenen3,6 |
N/A2 |
Yok |
N/A2 |
1dbtype_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 (db_e_errorsoccurred; parametre dbstatus_e_badaccessor durumudur). Aksi takdirde veriler sunucuya gönderilir, ancak sunucu udt parametre veri türü için hiçbir örtük dönüştürme olduğunu belirten bir hata iletisi döndürür.
2Bu konunun kapsamı dışındadır.
3 Onaltılık dize ikili veri veri dönüştürme oluşur.
4 İkili veri hex dizesi veri dönüştürme oluşur.
5Doğrulama oluşabilir erişeni zaman oluşturmak veya getirme anda db_e_errorsoccurred, durumu DBBINDSTATUS_UNSUPPORTEDCONVERSION için ayarlanmış bağlama hatadır.
6by_ref-var olmak kullanılmış.
dbtype_null ve dbtype_empty giriş parametreleri için çıkış parametreleri veya sonuçları ancak bağlanabilir. Giriş parametreleri için bağlandığında, durum DBSTATUS_S_ISNULL veya dbstatus_s_default olarak ayarlanmalıdır.
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.
[!NOT]
Yeni arabirimi UDTs ile ilgili parametreleri olarak kullanılan ISSCommandWithParameters, hangi miras alır ICommandWithParameters. Uygulamalar bu arabirimin en az ssprop_param_udt_name udt parametreleri için dbpropset_sqlserverparameter özellik ayarlamak için kullanmanız gerekir. Eğer bu yapılmazsa, ICommand::Execute db_e_errorsoccurred dönecektir. Bu arabirimi ve özellik kümesi bu konunun ilerisinde açıklanmıştır.
Eğer bir kullanıcı tanımlı türü tüm verileri tutabilecek kadar büyük olmayan bir sütuna eklenen ICommand::Execute db_e_errorsoccurred durumuyla s_ok döndürü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.
ole db satır kümesi eklemeler ve değişiklikler
SQL ServerYerel istemci yeni değerler ekler veya birçok çekirdek ole db şema satır kümeleri değiştirir.
procedure_parameters şeması satır kümesi
Aşağıdaki eklemeler procedure_parameters şema satır kümesi için yapılmıştır.
Sütun adı |
Tür |
Açıklama |
---|---|---|
SS_UDT_CATALOGNAME |
DBTYPE_WSTR |
Üç bölümlü adı tanımlayıcı. |
SS_UDT_SCHEMANAME |
DBTYPE_WSTR |
Üç bölümlü adı tanımlayıcı. |
SS_UDT_NAME |
DBTYPE_WSTR |
Üç bölümlü adı tanımlayıcı. |
SS_UDT_ASSEMBLY_TYPENAME |
DBTYPE_WSTR |
Derleme nitelikli adı yazın ve clr tarafından başvuru gerekli tüm derleme kimliği içeren adı. |
SQL_ASSEMBLIES şeması satır kümesi
SQL ServerYerel istemci ole db sağlayıcısı sunar tescilli UDTs açıklayan yeni bir sağlayıcı belirli şema satırkümesi. Derleme sunucusu, dbtype_wstr belirtilebilir ancak kümesi içinde mevcut değil. Belirtilmezse, satır kümesi geçerli sunucu için varsayılan olacaktır. SQL_ASSEMBLIES şeması satır kümesi aşağıdaki tabloda tanımlanır.
Sütun adı |
Tür |
Açıklama |
---|---|---|
ASSEMBLY_CATALOG |
DBTYPE_WSTR |
Katalog adı derlemenin türünü içerir. |
ASSEMBLY_SCHEMA |
DBTYPE_WSTR |
Şema adı veya türü içeren derleme sahibi adı. Derlemeler, veritabanı ve şema tarafından değil kapsamına eklenir, ancak onlar hala burada yansıtılır sahibi var. |
KUTUPHANE_ADİ |
DBTYPE_WSTR |
Türü içeren derleme adı. |
ASSEMBLY_ID |
DBTYPE_UI4 |
Türü içeren derleme nesne kimliği. |
PERMISSION_SET |
DBTYPE_WSTR |
Derleme için erişim kapsamını gösteren bir değeri. Değerler, "Güvenli", "external_access" ve "Güvenli değil" içerir. |
ASSEMBLY_BINARY |
DBTYPE_BYTES |
Derleme ikili gösterimi. |
SQL_ASSEMBLIES_ bağımlılıklar şeması satır kümesi
SQL ServerYerel istemci ole db sağlayıcısı için belirli bir sunucunun derleme bağımlılıkları tanımlayan yeni bir sağlayıcıya özel şema satır kümesi sunar. assembly_server olarak bir dbtype_wstr arayan tarafından belirtilmiş olabilir ama kümesi içinde mevcut değildir. Belirtilmezse, satır kümesi geçerli sunucu için varsayılan olacaktır. SQL_ASSEMBLY_DEPENDENCIES şeması satır kümesi aşağıdaki tabloda tanımlanır.
Sütun adı |
Tür |
Açıklama |
---|---|---|
ASSEMBLY_CATALOG |
DBTYPE_WSTR |
Katalog adı derlemenin türünü içerir. |
ASSEMBLY_SCHEMA |
DBTYPE_WSTR |
Şema adı veya türü içeren derleme sahibi adı. Derlemeler, veritabanı ve şema tarafından değil kapsamına eklenir, ancak onlar hala burada yansıyan bir sahibi var. |
ASSEMBLY_ID |
DBTYPE_UI4 |
Derleme nesne kimliği. |
REFERENCED_ASSEMBLY_ID |
DBTYPE_UI4 |
Başvurulan derleme nesne kimliği. |
sql_user_types şeması satır kümesi
SQL ServerYerel istemci ole db sağlayıcısı sunar yeni şema satır kümesi, sql_user_types, ne zaman açıklayan kayıtlı UDTs için belirtilen sunucu ekledi. udt_server dbtype_wstr çağıran tarafından belirtilmesi gerekir ama kümesi içinde mevcut değildir. sql_user_types şeması satır kümesi aşağıdaki tabloda tanımlanır.
Sütun adı |
Tür |
Açıklama |
---|---|---|
UDT_CATALOGNAME |
DBTYPE_WSTR |
udt sütunlar için bu özelliği katalog adını belirten bir dize udt tanımlanan dir. |
UDT_SCHEMANAME |
DBTYPE_WSTR |
udt sütunlar için bu özelliği udt tanımlanan şema adını belirten bir dizedir. |
UDT_NAME |
DBTYPE_WSTR |
udt sınıf içeren derleme adı. |
UDT_ASSEMBLY_TYPENAME |
DBTYPE_WSTR |
Tam tür adı (aqn) tarafından ad alanı öneki varsa türünün adını içerir. |
SÜTUNSAY şema satır kümesi
SÜTUNSAY şema satır kümesi eklemeler aşağıdaki sütunları içerir.
Sütun adı |
Tür |
Açıklama |
---|---|---|
SS_UDT_CATALOGNAME |
DBTYPE_WSTR |
udt sütunlar için bu özelliği katalog adını belirten bir dize udt tanımlanan dir. |
SS_UDT_SCHEMANAME |
DBTYPE_WSTR |
udt sütunlar için bu özelliği udt tanımlanan şema adını belirten bir dizedir. |
SS_UDT_NAME |
DBTYPE_WSTR |
udt adı |
SS_UDT_ASSEMBLY_TYPENAME |
DBTYPE_WSTR |
Tam tür adı (aqn) tarafından ad alanı öneki varsa türünün adını içerir. |
ole db özellik eklemeleri ve değişiklikler ayarlayın
SQL ServerYerel istemci yeni değerler ekler veya birçok çekirdek ole db özellik kümeleri değiştirir.
dbpropset_sqlserverparameter özellik kümesi
ole db üzerinden UDTs desteklemek için SQL Serveryerel istemci için aşağıdaki değerleri içeren yeni dbpropset_sqlserverparameter özellik kümesi uygular.
Ad |
Tür |
Açıklama |
---|---|---|
SSPROP_PARAM_UDT_CATALOGNAME |
DBTYPE_WSTR |
Üç bölümlü adı tanımlayıcı. udt parametreleri için bu özelliği katalog adını belirten bir dize türü kullanıcı tanımlı tanımlandığı olduğunu. |
SSPROP_PARAM_UDT_SCHEMANAME |
DBTYPE_WSTR |
Üç bölümlü adı tanımlayıcı. udt parametreleri için bu özelliği nerede kullanıcı tanımlı türü tanımlanan şema adını belirten bir dizedir. |
SSPROP_PARAM_UDT_NAME |
DBTYPE_WSTR |
Üç bölümlü adı tanımlayıcı. udt sütunlar için bu özelliği kullanıcı tanımlı türü tek bir parçası adını belirten bir dizedir. |
ssprop_param_udt_name zorunludur. ssprop_param_udt_catalogname ve ssprop_param_udt_schemaname isteğe bağlıdır. Özellikleri yanlış belirtilmezse, DB_E_ERRORSINCOMMAND döndürülür. Hem ssprop_param_udt_catalogname hem de ssprop_param_udt_schemaname belirtilmezse, sonra udt aynı veritabanı ve şema tablo olarak tanımlanmalıdır. udt tanım tablo olarak aynı şema değil (ancak aynı veritabanında), sonra ssprop_param_udt_schemaname belirtilmelidir. udt tanım farklı bir veritabanında ise, o zaman hem ssprop_param_udt_catalogname hem de ssprop_param_udt_schemaname belirtilmelidir.
dbpropset_sqlservercolumn özellik kümesi
Tabloların oluşturulmasını desteklemek için oluşturma ITableDefinition arabirimi, SQL Serveryerel istemci dbpropset_sqlservercolumn özellik kümesi aşağıdaki üç yeni sütun ekler.
Ad |
Açıklama |
Tür |
Açıklama |
---|---|---|---|
SSPROP_COL_UDT_CATALOGNAME |
UDT_CATALOGNAME |
VT_BSTR |
Türü dbtype_udt sütunlar için bu özelliği katalog adını belirten bir dize udt tanımlanan dir. |
SSPROP_COL_UDT_SCHEMANAME |
UDT_SCHEMANAME |
VT_BSTR |
Türü dbtype_udt sütunlar için bu özelliği udt tanımlanan şema adını belirten bir dizedir. |
SSPROP_COL_UDT_NAME |
UDT_NAME |
VT_BSTR |
Türü dbtype_udt sütunlar için bu özelliği udt tek bölüm adını belirten bir dizedir. Diğer sütun türleri için bu özellik boş bir dize döndürür. |
[!NOT]
UDTs PROVIDER_TYPES şema satır kümesi içinde görünür. Tüm sütunlar, okuma ve yazma erişimi.
ado, Açıklama sütununda karşılık gelen bir giriş kullanarak bu özellikleri için başvuruda bulunacak.
ssprop_col_udtname zorunludur. ssprop_col_udt_catalogname ve ssprop_col_udt_schemaname isteğe bağlıdır. Özellikleri yanlış belirtilmezse, DB_E_ERRORSINCOMMANDdöndürdü.
Ne ssprop_col_udt_catalogname, ne de ssprop_col_udt_schemaname belirtilirse, udt aynı veritabanı ve şema tablo olarak tanımlanmalıdır.
udt tanım tablo olarak aynı şema değil (ancak aynı veritabanında), ssprop_col_udt_schemaname belirtilmelidir.
udt tanım farklı bir veritabanında ise, ssprop_col_udt_catalogname ve ssprop_col_udt_schemaname belirtilmelidir.
ole db arabirim eklemeleri ve değişiklikler
SQL ServerYerel istemci yeni değerler ekler veya birçok arabirimleri ole db Çekirdek değiştirir.
ISSCommandWithParameters arabirimi
ole db üzerinden UDTs desteklemek için SQL Serveryerel istemci uygular dahil ek değişiklikler bir dizi ISSCommandWithParameters arabirimi. Bu yeni arabirimi çekirdek ole db arabirim devralan ICommandWithParameters. Üç yöntem devralınan ek olarak ICommandWithParameters; GetParameterInfo, MapParameterNames, ve SetParameterInfo; ISSCommandWithParameters sağlayan GetParameterProperties ve SetParameterProperties sunucusu belirli veri türlerini işlemesi için kullanılan yöntem.
[!NOT]
ISSCommandWithParameters arabirimi de yapar yeni ssparamprops kullanan yapısı.
IColumnsRowset arabirimi
Ek olarak ISSCommandWithParameters arabirimi, SQL Serveryerel istemci de arama dan döndürülen satır kümesi için yeni değerler ekler IColumnsRowset::GetColumnRowset yöntemi aşağıdaki gibi.
Sütun adı |
Tür |
Açıklama |
---|---|---|
DBCOLUMN_SS_UDT_CATALOGNAME |
DBTYPE_WSTR |
udt katalog adı tanımlayıcı. |
DBCOLUMN_SS_UDT_SCHEMANAME |
DBTYPE_WSTR |
udt şema adı tanımlayıcı. |
DBCOLUMN_SS_UDT_NAME |
DBTYPE_WSTR |
udt adı tanımlayıcı. |
DBCOLUMN_SS_ASSEMBLY_TYPENAME |
DBTYPE_WSTR |
Tür adı ve clr tarafından başvuru gerekli tüm derleme kimliği içeren derleme nitelikli adı. |
dbcolumn_type yukarıda belirtilen eklenen udt meta bakarak dbtype_udt için ayarlandığında sunucu udt sütun diğer ikili türlerinden ayırt edebilirsiniz. Bu verilerin kısmen tam sunucu türü udt ise. Non-udt sunucu türleri için bu sütunlar her zaman null döndürülür.
SQL Server yerel istemci odbc sürücüsü
İçinde bazı değişiklikler yapılmış SQL ServerUDTs desteklemek için yerel istemci odbc sürücüsü. SQL ServerYerel istemci odbc sürücüsü eşlemelerini SQL Serverudt sql_ss_udt sürücüye özgü sql veri tanımlayıcı yazın. udt sütunlar sql_ss_udt çıkmış. Sizin udt sütun açıkça başka bir türe bir sql deyimi kullanarak eşleştirirseniz ToString ya ToXMLString yöntemleri UDT veya üzerinden cast ve convert işlevi, sonuç kümesinde sütun türünü yansıtan gerçek türü sütun için dönüştürüldü
SQLColAttribute, SQLDescribeParam, SQLGetDescField
Ek bilgi için ya da sonuç kümesinin udt sütun veya udt parametresi üzerinden alınacak saklı yordam/parametreli sorgu sağlamak için dört yeni sürücüye özgü tanımlayıcısı alanları eklenmiştir SQLColAttribute, SQLDescribeParam, ve SQLGetDescField fonksiyonlar.
Eklenen dört yeni tanımlayıcısı alanları, sql_ca_ss_udt_catalog_name, sql_ca_ss_udt_schema_name, sql_ca_ss_udt_type_name ve sql_ca_ss_udt_assembly_type_name vardır.
SQLColumns SQLProcedureColumns
Ayrıca üç yeni sürücüyü belirli sütunları sonuç kümesini dan dönen eklenir SQLColumns ve SQLProcedureColumns bir udt sonuç ya da ilgili ek bilgi sağlamak için işlevler kümesi sütun veya udt parametre. Bu üç yeni sütun, ss_udt_catalog_name, ss_udt_schema_name ve ss_udt_assembly_type_name vardır.
Desteklenen dönüştürmeleri
c veri türleri için sql dönüştürürken sql_c_wchar, SQL_C_BINARY ve sql_c_char tüm sql_ss_udt için dönüştürülebilir. Ancak, ikili veri sql_c_wchar ve sql_c_char sql veri türleri dönüştürürken bir onaltılık dize dönüştürülür unutmayın.
c sql veri türleri dönüştürürken sql_c_wchar, SQL_C_BINARY ve sql_c_char tüm sql_ss_udt için dönüştürülebilir. Ancak ikili veri sql_c_wchar ve sql_c_char sql veri türleri dönüştürürken bir onaltılık dize dönüştürülür unutmayın.
Ayrıca bkz.
Başvuru
ISSCommandWithParameters (ole db)