Aracılığıyla paylaş


Kullanıcı tanımlı türler kullanma

SQL Server 2005 kullanıcı tanımlı türler (UDTs) kullanılmaya başlandı.UDTs genişletmek sql türü sistemi nesneler ve özel veri yapılarını depolamanıza olanak vererek bir SQL Server veritabanı.UDTs birden çok veri türlerini içerebilir ve davranışlar, bunları tek bir bileşiminden geleneksel diğer ad ad veri türlerinden Metin'e ayrım olabilir SQL Server Sistem veri türü.UDTs herhangi biri tarafından desteklenen dilleri kullanılarak tanımlanır.Doğrulanabilir kod üreten net ortak dil çalışma zamanı (clr).Bu, Microsoft Visual C# içerir® ve Visual Basic® .NET.Veri alanları ve özellikleri sergilenen bir.net sınıf veya yapı ve davranışları sınıf veya yapı yöntemleri tarafından tanımlanır.

udt sütun tanımı olarak kullanılabilecek bir tablo, bir değişken olarak bir Transact-SQL , toplu iş iş veya bir bağımsız değişkeni olarak bir Transact-SQL işlev veya saklı yordam.UDTs hakkında daha fazla bilgi için bkz: clr kullanıcı tanımlı türleri ile çalışma.

SQL Server Native Client OLE DB Sağlayıcısı

The SQL Server Native Client OLE DB provider supports UDTs as binary types with metadata information, which allows you to manage UDTs as objects.udt sütunlar dbtype_udt sunulur ve meta veriler çekirdek ole db arabirim kullanıma sunulan IColumnRowsetve yeni ISSCommandWithParameters arabirimi.

Not

The IRowsetFind::FindNextRow method does not work with the UDT data type.udt arama olarak kullanılıyorsa, db_e_badcompareop döndürülen sütun türü.

Veri bağlamaları ve Coercions

Aşağıdaki tablo bağlama ve zorlama ile kullanarak listelenen veri türleri oluşan açıklar bir SQL Server udt.udt sütunlar üzerinden sunulur SQL Server yerel istemci ole db sağlayıcı olarak dbtype_udt.Nesneleri olarak tanımlanan kendi türleriniz yönetebilirsiniz böylece uygun şema satır kümeleri meta veriler alabilirsiniz.

Veri türü

Sunucuya

UDT

Sunucuya

udt

Sunucudan

UDT

Sunucudan

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

Desteklenmiyor

N/A2

Desteklenmiyor

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şimci türü dbtype_udt, olan deyim çalıştırıldığında hata oluşur (db_e_errorsoccurred; parametre dbstatus_e_badaccessor durumudur).Aksi halde, veri sunucusuna gönderilir, ancak sunucu udt arasında örtülü dönüşüm parametre veri türü için olduğunu belirten bir hata döndürür.

2Bu konunun kapsam dışındadır.

3 İçin ikili veri onaltılık dize gelen veri dönüştürme gerçekleşir.

4 Onaltılı dize ikili veri alanından veri dönüştürme gerçekleşir.

5Doğrulama gerçekleştirilir oluşturmak erişimci saat, veya getirme anda db_e_errorsoccurred, durumu DBBINDSTATUS_UNSUPPORTEDCONVERSION için küme bağlama hatadır.

6by_ref kullanılabilir.

dbtype_null ve dbtype_empty giriş parametresi çıkış parametreleri veya sonuçlar için ancak bağlanabilir.Ne zaman giriş parametreleri için bağlı, durumun olması küme DBSTATUS_S_ISNULL veya dbstatus_s_default.

dbtype_udt da dbtype_empty ve dbtype_null için dönüştürülebilir, ancak dbtype_null ve dbtype_empty dbtype_udt için dönüştürülemiyor.dbtype_bytes ile tutarlı olmasıdır.

Not

UDTs parametre olarak ilgilenmeye yönelik yeni bir arabirim kullanılır ISSCommandWithParameters, hangi devralan ICommandWithParameters.Uygulamalar, bu arabirim için kullanmaları gereken küme az ssprop_param_udt_name dbprop,küme_sqlserverparameter özelliği küme udt parametreleri için.Bu yapılmadığı takdirde, ICommand::Execute db_e_errorsoccurred döndürecektir.Bu arabirim ve özellik küme bu konunun ilerisinde açıklanmıştır.

kullanıcı tanımlı tür içine yerleştirilmişse, bir sütun olmayan, verileri depolamak için büyük 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 uygun değildir.Diğer bağlantıları desteklenir.

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 için 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 için gerekli tüm derleme kimliği içeren adı.

SQL_ASSEMBLIES şeması satır kümesi

The SQL Server Native Client OLE DB provider exposes a new provider specific schema rowset that describes the registered UDTs.DERLEME sunucusu bir dbtype_wstr belirtilen, ancak satır kümesi kümesi kümesinde yok.Belirtilmezse, satır kümesi için geçerli olan sunucu varsayılan olacaktır.Aşağıda, SQL_ASSEMBLIES şema satır kümesi tanımlı tablo.

Sütun adı

Tür

Açıklama

ASSEMBLY_CATALOG

DBTYPE_WSTR

Katalog adı derleme olan türü bulunur.

ASSEMBLY_SCHEMA

DBTYPE_WSTR

Şema adı veya sahibinin adı, derleme , türünü içerir.Derlemeler veritabanı ve şema tarafından değil kapsamlı olsa da, bunlar hala burada yansıtılır, sahip.

ASSEMBLY_NAME

DBTYPE_WSTR

Türü içeren derleme adı.

ASSEMBLY_ID

DBTYPE_UI4

Nesne Kimliği derleme , türünü içerir.

NOT

DBTYPE_WSTR

Gösteren bir değeri kapsam erişim derleme."Güvenli", "Permission_set" ve "Güvenli olmayan" değerler 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ı belirli bir sunucunun derleme bağımlılıklarını açıklar yeni bir sağlayıcıya özgü şema satır kümesi sunar.assembly_server arayan bir dbtype_wstr olarak belirtilebilir, ancak satır kümesi kümesi kümesinde yok.Belirtilmezse, satır kümesi için geçerli olan sunucu varsayılan olacaktır.Aşağıda, SQL_ASSEMBLY_DEPENDENCIES şema satır kümesi tanımlı tablo.

Sütun adı

Tür

Açıklama

ASSEMBLY_CATALOG

DBTYPE_WSTR

Katalog adı derleme olan türü bulunur.

ASSEMBLY_SCHEMA

DBTYPE_WSTR

Şema adı veya sahibinin adı, derleme , türünü içerir.Derlemeler veritabanı ve şema tarafından değil kapsamlı olsa da, bunlar yine burada yansıtılan bir sahibi var.

ASSEMBLY_ID

DBTYPE_UI4

Derleme nesne kimliği.

REFERENCED_ASSEMBLY_ID

DBTYPE_UI4

Başvuru yapılan bir derleme nesne kimliği.

sql_user_types şeması satır kümesi

SQL ServerYerel istemci ole db sağlayıcı sunar yeni şema satır kümesi, ne zaman açıklanır sql_user_types, belirtilen sunucu için kayıtlı UDTs eklenir.udt_server çağıran tarafından bir dbtype_wstr belirtilmesi gerekir, ancak satır kümesi kümesi kümesinde yok.Aşağıda, sql_user_types şema satır kümesi tanımlı tablo.

Sütun adı

Tür

Açıklama

UDT_CATALOGNAME

DBTYPE_WSTR

udt sütunlar için bu özellik Katalog adını belirten bir dize udt tanımlandığı dir.

UDT_SCHEMANAME

DBTYPE_WSTR

udt sütunlar için bu özellik olan bir dize nerede udt tanımlanan şema adını belirten.

UDT_NAME

DBTYPE_WSTR

udt sınıfı olarak bulunduğu derleme adı.

UDT_ASSEMBLY_TYPENAME

DBTYPE_WSTR

Tür adı (varsa) tarafından ad alanı öneki tam tür adı (aqn) içerir.

SÜTUNLARI şema satır kümesi

Eklemeler SÜTUNLARDA şema satır kümesi 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 özellik Katalog adını belirten bir dize udt tanımlandığı dir.

SS_UDT_SCHEMANAME

DBTYPE_WSTR

udt sütunlar için bu özellik olan bir dize nerede udt tanımlanan şema adını belirten.

SS_UDT_NAME

DBTYPE_WSTR

udt adı

SS_UDT_ASSEMBLY_TYPENAME

DBTYPE_WSTR

Tür adı (varsa) tarafından ad alanı öneki tam tür adı (aqn) içerir.

ole db özellik eklemeler 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 Server Native Client uygulayan yeni dbpropset_sqlserverparameter özellik küme içeren aşağıdaki değerleri.

Ad

Tür

Açıklama

SSPROP_PARAM_UDT_CATALOGNAME

DBTYPE_WSTR

Üç bölümlü adı tanımlayıcı.

udt parametreleri için bu özellik Katalog adını belirten bir dizedir yeri kullanıcı tanımlı tür tanımlanır.

SSPROP_PARAM_UDT_SCHEMANAME

DBTYPE_WSTR

Üç bölümlü adı tanımlayıcı.

udt parametreleri için bu özellik olan bir dize kullanıcı tanımlı tür tanımlandığı şemasının adını belirtir.

SSPROP_PARAM_UDT_NAME

DBTYPE_WSTR

Üç bölümlü adı tanımlayıcı.

udt sütunlar için bu özellik olan bir dize , kullanıcı tanımlı tür tek bir parça adını belirtir.

ssprop_param_udt_name zorunludur.ssprop_param_udt_catalogname ve ssprop_param_udt_schemaname isteğe bağlıdır.Özelliklerden herhangi biri yanlış belirtilmemişse, DB_E_ERRORSINCOMMAND döndürülür.Hem ssprop_param_udt_catalogname hem de ssprop_param_udt_schemaname belirtilmediği takdirde sonra udt aynı veritabanı ve şema tablo olarak tanımlanması gerekir.udt tanım tablo olarak aynı şema değil (ancak aynı veritabanında vardır), ssprop_param_udt_schemaname belirtilmelidir.udt tanım farklı bir veritabanında ise, hem ssprop_param_udt_catalogname hem de ssprop_param_udt_schemaname belirtilmelidir.

dbpropset_sqlservercolumn özellik kümesi

Tablolarda oluşturulmasını desteklemek için ITableDefinition arabirim, SQL Server yerel istemci dbpropset_sqlservercolumn özellik küme 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 özellik Katalog adını belirten bir dize udt tanımlandığı dir.

SSPROP_COL_UDT_SCHEMANAME

UDT_SCHEMANAME

VT_BSTR

Türü dbtype_udt sütunlar için bu özellik olan bir dize nerede udt tanımlanan şema adını belirten.

SSPROP_COL_UDT_NAME

UDT_NAME

VT_BSTR

Türü dbtype_udt sütunlar için bu özellik olan bir dize udt tek bir parça adını belirtme.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 alanına karşılık gelen bir giriş kullanarak bu özellikleri için başvurmak sütun.

ssprop_col_udtname zorunludur.ssprop_col_udt_catalogname ve ssprop_col_udt_schemaname isteğe bağlıdır.Özelliklerden herhangi biri yanlış, belirtilmemişse DB_E_ERRORSINCOMMAND döndürülür.

Ne ssprop_col_udt_catalogname, ne de ssprop_col_udt_schemaname belirtilirse, udt aynı veritabanı ve şema tablo olarak tanımlanması gerekir.

ssprop_col_udt_schemaname udt tanım tablo olarak aynı şema değil (ancak aynı veritabanında farklıysa) belirtilmelidir.

udt tanım farklı bir veritabanında ise, ssprop_col_udt_catalogname hem de ssprop_col_udt_schemaname belirtilmelidir.

ole db arabirim eklemeler 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 Server Native Client uygulayan ve buna ek olarak da dahil olmak üzere, değişiklik sayısı ISSCommandWithParameters arabirim.Bu yeni arabirim çekirdek ole db arabirimden kalýtýmla alan ICommandWithParameters.Devralınan üç yöntem ek olarak ICommandWithParameters; GetParameterInfo, MapParameterNames, ve SetParameterInfo; ISSCommandWithParameters sağlayan GetParameterProperties ve SetParameterProperties server belirli veri türlerini işlemesi için kullanılan yöntemler.

Not

The ISSCommandWithParameters interface also makes use of the new SSPARAMPROPS structure.

IColumnsRowset arabirimi

Ek olarak ISSCommandWithParameters arabirim, SQL Server Native Client de ekler yeni değerler arama tarafından döndürülen satır kümesi için IColumnsRowset::GetColumnRowset yöntem 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 için gerekli tüm derleme kimliği içeren derleme nitelikli adı.

dbcolumn_type olduğunda sunucu udt sütun başka ikili türlerinden ayırt küme eklenen udt meta verilerleri yukarıda belirtilen at bakarak dbtype_udt için.Bu verilerin kısmen tamamlanmış ise, sunucu udt türüdür.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 çok sayıda değişiklik yapılmıştır SQL Server yerel istemci odbc sürücüsü desteklemek UDTs.The SQL Server Native Client ODBC driver maps the SQL Server UDT to SQL_SS_UDT driver-specific SQL data type identifier.udt sütunlar sql_ss_udt sunulmuşsa.Size bir udt sütun açıkça başka bir yazıyla eşleştirmek, bir SQL deyim kullanarak ToString veya ToXMLString yoluyla veya udt yöntemleri cast/convert işlev, sonuç küme sütun türünü yansıtan gerçek türü sütun dönüştürüldü

SQLColAttribute, SQLDescribeParam, SQLGetDescField

Dört yeni sürücüye özgü tanımlayıcısı alanları bir udt sütun için ya da ek bilgi sağlamak için eklenmiştir bir sonuç küme, ya da bir udt parametresi aracılığıyla alınacak saklı yordam/Parametreli Sorgu SQLColAttribute, SQLDescribeParam, ve SQLGetDescField fonksiyonlar.

Eklenen dört yeni tanımlayıcısı 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 alanlardır.

SQLColumns SQLProcedureColumns

Buna ek olarak, üç yeni sürücüyü belirli sütunları eklenen sonuç küme dönen SQLColumns ve SQLProcedureColumns bir udt ya da hakkında ek bilgi sağlamak için İşlevler sonuç küme sütun veya bir udt parametre.Bu üç yeni sütun şunlardır: ss_udt_catalog_name, ss_udt_schema_name ve ss_udt_assembly_type_name.

Desteklenen dönüştürmeleri

sql c 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, bir onaltılık için ikili veri dönüştürülür unutmayın dize sql_c_wchar ve sql_c_char sql veri türlerinden Metin'e dönüştürme sırasında.

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.Bir onaltılık için bu ikili veri dönüştürülür, ancak Not dize sql_c_wchar ve sql_c_char sql veri türlerinden Metin'e dönüştürme sırasında.