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)

Diğer Kaynaklar

SQL Server yerel istemci özellikleri