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.
Ayrıca bkz.