Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Database
Analitik Platform Sistemi (PDW)
Önemli
SQL Server Native Client (SNAC) ile birlikte gönderilmez:
- SQL Server 2022 (16.x) ve sonraki sürümleri
- SQL Server Management Studio 19 ve sonraki sürümleri
YENI uygulama geliştirme için SQL Server Yerel İstemcisi (SQLNCLI veya SQLNCLI11) ve SQL Server için eski Microsoft OLE DB Sağlayıcısı (SQLOLEDB) önerilmez.
Yeni projeler için aşağıdaki sürücülerden birini kullanın:
SQL Server Veritabanı Altyapısı'nın (sürüm 2012 ile 2019 arasında) bir bileşeni olarak gelen SQLNCLI için, Destek Yaşam Döngüsü özel durumukonusuna bakın.
SQL Server 2005 (9.x), kullanıcı tanımlı tipleri (UDT'ler) tanıttı. UDT'ler, nesneleri ve özel veri yapılarını bir SQL Server veritabanında depolamanıza olanak tanıyarak SQL tür sistemini genişletir. UDF'ler birden çok veri türü içerebilir ve davranışları olabilir ve bunları tek bir SQL Server sistem veri türünden oluşan geleneksel diğer ad veri türlerinden ayırt edebilir. UDT'ler, doğrulanabilir kod üreten .NET ortak dil çalışma zamanı (CLR) tarafından desteklenen dillerden herhangi biri kullanılarak tanımlanır. Buna C# ve Visual Basic .NET dahildir. Veriler, .NET sınıfının veya yapısının alanları ve özellikleri olarak ortaya çıkar ve davranışlar sınıfın veya yapının yöntemleriyle tanımlanır.
UDT, bir tablonun sütun tanımı, Transact-SQL bir partide değişken olarak veya Transact-SQL fonksiyonunun veya depolanan prosedürün argümanı olarak kullanılabilir.
SQL Server Yerel İstemci OLE DB Sağlayıcısı
SQL Server Native Client OLE DB sağlayıcısı, UDT'leri meta veri bilgisine sahip ikili tipler olarak destekler; bu da UDT'leri nesne olarak yönetmenize olanak tanır. UDT sütunları DBTYPE_UDT olarak görünür ve meta verileri, çekirdek OLE DB arayüzü IColumnRowset ve yeni ISSCommandWithParameters arayüzü aracılığıyla ortaya çıkar.
Uyarı
IRowsetFind::FindNextRow yöntemi UDT veri tipiyle çalışmaz. DB_E_BADCOMPAREOP UDT arama sütunu tipi olarak kullanılırsa döner.
Veri Bağlamaları ve Zorlamalar
Aşağıdaki tablo, listelenen veri türleri SQL Server UDT ile kullanılırken ortaya çıkan bağlama ve zorlamayı açıklar. UDT sütunları, SQL Server Native Client OLE veritabanı sağlayıcısı aracılığıyla DBTYPE_UDT olarak sunulur. Meta veriyi uygun şema satır kümeleri üzerinden alabilirsiniz, böylece kendi tanımlı türlerinizi nesne olarak yönetebilirsiniz.
| Veri türü | Sunucuya UDT |
Sunucuya UDT dışı |
Sunucudan UDT |
Sunucudan UDT dışı |
|---|---|---|---|---|
| DBTYPE_UDT | Desteklenen 6 | Hata 1 | Desteklenen 6 | Hata 5 |
| DBTYPE_BYTES | Desteklenen 6 | Yok 2 | Desteklenen 6 | Yok 2 |
| DBTYPE_WSTR | Desteklenenler 3,6 | Yok 2 | Desteklenenler 4,6 | Yok 2 |
| DBTYPE_BSTR | Desteklenenler 3,6 | Yok 2 | Desteklenen 4 | Yok 2 |
| DBTYPE_STR | Desteklenenler 3,6 | Yok 2 | Desteklenenler 4,6 | Yok 2 |
| DBTYPE_IUNKNOWN | Desteklenmez | Yok 2 | Desteklenmez | Yok 2 |
| DBTYPE_VARIANT (VT_UI1 | VT_ARRAY) | Desteklenen 6 | Yok 2 | Desteklenen 4 | Yok 2 |
| DBTYPE_VARIANT (VT_BSTR) | Desteklenenler 3,6 | Yok 2 | Mevcut Değil | Yok 2 |
1ICommandWithParameters::SetParameterInfo ile DBTYPE_UDT dışında bir sunucu türü belirtilirse ve erişici tipi DBTYPE_UDT ise, ifade yürütüldüğünde hata oluşur (DB_E_ERRORSOCCURRED; parametre durumu DBSTATUS_E_BADACCESSOR). Aksi takdirde veri sunucuya gönderilir, ancak sunucu UDT'den parametrenin veri tipine örtük bir dönüşüm olmadığını belirten bir hata döndürür.
2Bu konunun kapsamının ötesinde.
3 Altaltıgen diziden ikili veriye veri dönüşümü gerçekleşir.
4 İkili veriden altıgen dizeme veri dönüşümü gerçekleşir.
5Doğrulama, erişimci oluşturma zamanında veya getirme sırasında hata DB_E_ERRORSOCCURRED ve bağlama durumu DBBINDSTATUS_UNSUPPORTEDCONVERSION olarak ayarlandığında gerçekleşebilir.
6BY_REF kullanılabilir.
DBTYPE_NULL ve DBTYPE_EMPTY giriş parametreleri için sınırlı olabilir, ancak çıktı parametreleri veya sonuçlar için sınırlı değildir. Giriş parametreleri için sınırlıyken, durum DBSTATUS_S_ISNULL veya DBSTATUS_S_DEFAULT olarak ayarlanmalıdır.
DBTYPE_UDT ayrıca DBTYPE_EMPTY ve DBTYPE_NULL'ye dönüştürülebilir, ancak DBTYPE_NULL ve DBTYPE_EMPTY DBTYPE_UDT'ye dönüştürülemez. Bu DBTYPE_BYTES ile tutarlıdır.
Uyarı
UDT'leri parametre olarak işlemek için yeni bir arayüz kullanılır; ISSCommandWithParameters, ICommandWithParameters'dan miras alınır. Uygulamalar, UDT parametreleri için DBPROPSET_SQLSERVERPARAMETER özellik kümesinin en az SSPROP_PARAM_UDT_NAME ayarını ayarlamak için bu arayüzü kullanmak zorundadır. Eğer bu yapılmazsa, ICommand::Execute DB_E_ERRORSOCCURRED döndürecektir. Bu arayüz ve özellik kümesi, bu konunun ilerleyen bölümlerinde açıklanacaktır.
Eğer kullanıcı tanımlı bir tip tüm verilerini barındıracak kadar büyük olmayan bir sütuna eklenirse, ICommand::Execute DB_E_ERRORSOCCURRED durumuyla S_OK döndürecektir.
OLE DB çekirdek hizmetleri (IDataConvert) tarafından sağlanan veri dönüşümleri DBTYPE_UDT için geçerli değildir. Başka hiçbir bağlama desteklenmemektedir.
OLE DB Sıra Seti Eklemeleri ve Değişiklikleri
SQL Server Native Client, birçok temel OLE DB şema satır kümesine yeni değerler veya değişiklikler ekler.
PROCEDURE_PARAMETERS Şema Rowset
PROCEDURE_PARAMETERS şema sıra setine aşağıdaki eklemeler yapılmıştır.
| Sütun adı | Türü | Description |
|---|---|---|
| SS_UDT_CATALOGNAME | DBTYPE_WSTR | Üç bölümden oluşan isim tanımlayıcısı. |
| SS_UDT_SCHEMANAME | DBTYPE_WSTR | Üç bölümden oluşan isim tanımlayıcısı. |
| SS_UDT_NAME | DBTYPE_WSTR | Üç bölümden oluşan isim tanımlayıcısı. |
| SS_UDT_ASSEMBLY_TYPENAME | DBTYPE_WSTR | Assembly Nitelikli Adı, tip adını ve CLR tarafından referans alınması gereken tüm montaj tanımlamalarını içerir. |
SQL_ASSEMBLIES Şema Rowset
SQL Server Native Client OLE DB sağlayıcısı, kayıtlı UDT'leri tanımlayan yeni bir sağlayıcıya özgü şema satır seti sunar. ASSEMBLY sunucusu bir DBTYPE_WSTR olarak belirtilebilir, ancak satır kümesinde bulunmaz. Belirtilmediyse, satır kümesi mevcut sunucuya varsayılan olarak geçer. SQL_ASSEMBLIES şema satır kümesi aşağıdaki tabloda tanımlanmıştır.
| Sütun adı | Türü | Description |
|---|---|---|
| ASSEMBLY_CATALOG | DBTYPE_WSTR | Tipi içeren montajın katalog adı. |
| ASSEMBLY_SCHEMA | DBTYPE_WSTR | Tipi içeren montajın şema adı veya sahibi adı. Montajlar veritabanı kapsamında olup şema ile değil, ancak yine de bir sahibine sahiptir ve bu burada da yansıtılır. |
| ASSEMBLY_NAME | DBTYPE_WSTR | Tipi içeren montajın adı. |
| ASSEMBLY_ID | DBTYPE_UI4 | Tipi içeren montajın nesne kimliği. |
| PERMISSION_SET | DBTYPE_WSTR | Montajın erişim kapsamını gösteren bir değer. Değerler arasında "GÜVENLİ", "EXTERNAL_ACCESS" ve "GÜVENLİS" yer alır. |
| ASSEMBLY_BINARY | DBTYPE_BYTES | Meclisin ikili temsili. |
SQL_ASSEMBLIES_ BAĞIMLILIK şeması Rowset
SQL Server Native Client OLE DB sağlayıcısı, belirli bir sunucu için assembly bağımlılıklarını tanımlayan yeni bir sağlayıcıya özgü şema satırı sunar. ASSEMBLY_SERVER, arayan tarafından DBTYPE_WSTR olarak belirtilebilir, ancak satır kümesinde bulunmaz. Belirtilmediyse, satır kümesi mevcut sunucuya varsayılan olarak geçer. SQL_ASSEMBLY_DEPENDENCIES şema satır kümesi aşağıdaki tabloda tanımlanmıştır.
| Sütun adı | Türü | Description |
|---|---|---|
| ASSEMBLY_CATALOG | DBTYPE_WSTR | Tipi içeren montajın katalog adı. |
| ASSEMBLY_SCHEMA | DBTYPE_WSTR | Tipi içeren montajın şema adı veya sahibi adı. Montajlar veritabanına göre kapsamlı olsa da, şema ile değil, yine de bir sahibine sahiptir ve bu burada da yansıtılır. |
| ASSEMBLY_ID | DBTYPE_UI4 | Montajın nesne kimliği. |
| REFERENCED_ASSEMBLY_ID | DBTYPE_UI4 | Referans edilen montajın nesne kimliği. |
SQL_USER_TYPES Şema Rowset
SQL Server Native Client OLE DB sağlayıcısı, belirli bir sunucu için kayıtlı UDT'lerin ne zaman eklendiğini açıklayan yeni şema satırı SQL_USER_TYPES'yi ortaya çıkarır. UDT_SERVER, arayan tarafından DBTYPE_WSTR olarak belirtilmeli ancak satır kümesinde bulunmamalıdır. SQL_USER_TYPES şema satır kümesi aşağıdaki tabloda tanımlanmıştır.
| Sütun adı | Türü | Description |
|---|---|---|
| UDT_CATALOGNAME | DBTYPE_WSTR | UDT sütunları için bu özellik, UDT'nin tanımlandığı kataloğun adını belirten bir dizidir. |
| UDT_SCHEMANAME | DBTYPE_WSTR | UDT sütunları için bu özellik, UDT'nin tanımlandığı şema adını belirten bir dizidir. |
| UDT_NAME | DBTYPE_WSTR | UDT sınıfını içeren montajın adı. |
| UDT_ASSEMBLY_TYPENAME | DBTYPE_WSTR | Tam tip adı (AQN), varsa isim alanı ile birlikte tür adı da içerir. |
COLUMNS şema satırları
COLUMNS şema satır setine eklenen eklemeler aşağıdaki sütunları içerir.
| Sütun adı | Türü | Description |
|---|---|---|
| SS_UDT_CATALOGNAME | DBTYPE_WSTR | UDT sütunları için bu özellik, UDT'nin tanımlandığı kataloğun adını belirten bir dizidir. |
| SS_UDT_SCHEMANAME | DBTYPE_WSTR | UDT sütunları için bu özellik, UDT'nin tanımlandığı şema adını belirten bir dizidir. |
| SS_UDT_NAME | DBTYPE_WSTR | UDT'nin adı |
| SS_UDT_ASSEMBLY_TYPENAME | DBTYPE_WSTR | Tam tip adı (AQN), varsa isim alanı ile birlikte tür adı da içerir. |
OLE DB Mülk Seti Eklemeleri ve Değişiklikleri
SQL Server Native Client, birçok temel OLE DB özellik setine yeni değerler veya değişiklikler ekler.
DBPROPSET_SQLSERVERPARAMETER Özellik Seti
OLE DB üzerinden UDT'leri desteklemek için SQL Server Native Client aşağıdaki değerleri içeren yeni DBPROPSET_SQLSERVERPARAMETER özellik kümesini uygular.
| İsim | Türü | Description |
|---|---|---|
| SSPROP_PARAM_UDT_CATALOGNAME | DBTYPE_WSTR | Üç bölümden oluşan isim tanımlayıcısı. UDT parametreleri için bu özellik, kullanıcı tanımlı türünün tanımlandığı kataloğun adını belirten bir dizidir. |
| SSPROP_PARAM_UDT_SCHEMANAME | DBTYPE_WSTR | Üç bölümden oluşan isim tanımlayıcısı. UDT parametreleri için, bu özellik, kullanıcı tanımlı türünün tanımlandığı şema adını belirten bir dizidir. |
| SSPROP_PARAM_UDT_NAME | DBTYPE_WSTR | Üç bölümden oluşan isim tanımlayıcısı. UDT sütunları için bu özellik, kullanıcı tanımlı türün tek parça adını belirten bir dizidir. |
SSPROP_PARAM_UDT_NAME zorunludur. SSPROP_PARAM_UDT_CATALOGNAME ve SSPROP_PARAM_UDT_SCHEMANAME isteğe bağlıdır. Özelliklerden herhangi biri yanlış belirtilirse DB_E_ERRORSINCOMMAND geri gönderilir. Eğer hem SSPROP_PARAM_UDT_CATALOGNAME hem de SSPROP_PARAM_UDT_SCHEMANAME belirtilmemişse, UDT tablo ile aynı veritabanı ve şemada tanımlanmalıdır. Eğer UDT tanımı tablo ile aynı şemada değilse (ancak aynı veritabanındaysa), SSPROP_PARAM_UDT_SCHEMANAME belirtilmelidir. Eğer UDT tanımı farklı bir veritabanındaysa, hem SSPROP_PARAM_UDT_CATALOGNAME hem de SSPROP_PARAM_UDT_SCHEMANAME belirtilmelidir.
DBPROPSET_SQLSERVERCOLUMN Özellik Kümesi
ITableDefinition arayüzünde tablo oluşturulmasını desteklemek için SQL Server Native Client aşağıdaki üç yeni sütunu DBPROPSET_SQLSERVERCOLUMN özellik setine ekler.
| İsim | Description | Türü | Description |
|---|---|---|---|
| SSPROP_COL_UDT_CATALOGNAME | UDT_CATALOGNAME | VT_BSTR | DBTYPE_UDT tipindeki sütunlar için bu özellik, UDT'nin tanımlandığı kataloğun adını belirten bir dizidir. |
| SSPROP_COL_UDT_SCHEMANAME | UDT_SCHEMANAME | VT_BSTR | DBTYPE_UDT tipli sütunlar için bu özellik, UDT'nin tanımlandığı şemanın adını belirten bir dizidir. |
| SSPROP_COL_UDT_NAME | UDT_NAME | VT_BSTR | DBTYPE_UDT tipindeki sütunlar için bu özellik, UDT'nin tek parça adını belirten bir dizidir. Diğer sütun türleri için ise bu özellik boş bir diziyi döndürür. |
Uyarı
UDT'ler PROVIDER_TYPES şema satır setinde görünmez. Tüm sütunlarda okuma ve yazma erişimi vardır.
ADO, bu özelliklere Açıklama sütunundaki ilgili girişi kullanarak başvuracaktır.
SSPROP_COL_UDTNAME zorunludur. SSPROP_COL_UDT_CATALOGNAME ve SSPROP_COL_UDT_SCHEMANAME isteğe bağlıdır. Özelliklerden herhangi biri yanlış belirtilirse, DB_E_ERRORSINCOMMAND geri gönderilir.
Ne SSPROP_COL_UDT_CATALOGNAME ne de SSPROP_COL_UDT_SCHEMANAME belirtilmemişse, UDT tablo ile aynı veritabanı ve şemada tanımlanmalıdır.
UDT tanımı tablo ile aynı şemada değilse (ancak aynı veritabanındaysa), SSPROP_COL_UDT_SCHEMANAME belirtilmelidir.
UDT tanımı farklı bir veritabanındaysa, hem SSPROP_COL_UDT_CATALOGNAME hem de SSPROP_COL_UDT_SCHEMANAME belirtilmelidir.
OLE DB Arayüz Eklemeleri ve Değişiklikleri
SQL Server Native Client, birçok temel OLE DB arayüzüne yeni değerler veya değişiklikler ekler.
ISSCommandWithParameters Arayüzü
OLE DB üzerinden UDT'leri desteklemek için SQL Server Native Client ISSCommandWithParameters arayüzünün eklenmesi de dahil olmak üzere bir dizi değişiklik uygular. Bu yeni arayüz, çekirdek OLE veritabanı arayüzü ICommandWithParameters'dan miras alınır. ICommandWithParameters'dan miras alınan üç yönteme ek olarak; GetParameterInfo, MapParameterNames ve SetParameterInfo; ISSCommandWithParameters, sunucuya özgü veri türlerini işlemek için kullanılan GetParameterProperties ve SetParameterProperties yöntemlerini sağlar.
Uyarı
ISSCommandWithParameters arayüzü de yeni SSPARAMPROPS yapısını kullanır.
IColumnsRowset Arayüzü
ISSCommandWithParameters arayüzüne ek olarak, SQL Server Native Client ayrıca IColumnsRowset::GetColumnRowset metodunu çağırarak geri dönen satır kümesine yeni değerler ekler; bunlar arasında aşağıdakiler de bulunur.
| Sütun Adı | Türü | Description |
|---|---|---|
| DBCOLUMN_SS_UDT_CATALOGNAME | DBTYPE_WSTR | Bir UDT katalog adı tanımlayıcısı. |
| DBCOLUMN_SS_UDT_SCHEMANAME | DBTYPE_WSTR | Bir UDT şema isim tanımlayıcısı. |
| DBCOLUMN_SS_UDT_NAME | DBTYPE_WSTR | Bir UDT isim tanımlayıcısı. |
| DBCOLUMN_SS_ASSEMBLY_TYPENAME | DBTYPE_WSTR | Montaj nitelikli isim, tip adını ve CLR tarafından referans alınması gereken tüm montaj tanımlamalarını içerir. |
Yukarıda belirtilen eklenmiş UDT meta verilerine bakarak, DBCOLUMN_TYPE DBTYPE_UDT olarak ayarlandığında, bir sunucu UDT sütununu diğer ikili tiplerden ayırt edebilirsiniz. Eğer bu veri kısmen tamamlanmışsa, sunucu tipi UDT'dir. UDT olmayan sunucu türleri için bu sütunlar her zaman NULL olarak döner.
SQL Server Yerel İstemci ODBC Sürücüsü
SQL Server Native Client ODBC sürücüsünde UDT'leri desteklemek için bir dizi değişiklik yapılmıştır. SQL Server Native Client ODBC sürücüsü, SQL Server UDT'yi sürücüye özgü SQL_SS_UDT SQL veri tipi tanımlayıcısına eşler. UDT kolonları SQL_SS_UDT olarak yüzeylendirilir. Bir UDT sütununu UDT'nin ToString veya ToXMLString yöntemlerini kullanarak veya CAST/CONVERT fonksiyonuyla SQL ifadesinde başka bir tipe açıkça eşlerseniz, sonuç kümesindeki sütunun türü, sütün dönüştürülen gerçek tipi yansıtır
SQLColAttribute, SQLDescribeParam, SQLGetDescField
Dört yeni sürücüye özgü tanımlayıcı alan, sonuç kümesinin UDT sütunu veya saklanan prosedür/parametreleştirilmiş sorgu UDT parametresi için SQL Attribute, SQLDescribeParam ve SQLGetDescField fonksiyonları aracılığıyla alınacak ek bilgi sağlamak amacıyla eklenmiştir.
Eklenen dört yeni tanımlayıcı alanı 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'dir.
SQLColumns, SQLProcedureColumns
Ayrıca, SQLColumns ve SQLProcedureColumns fonksiyonlarından geri dönen sonuç kümesine üç yeni sürücüye özel sütun eklenerek UDT sonuç seti sütunu veya UDT parametresi hakkında ek bilgi sağlanır. Bu üç yeni sütun SS_UDT_CATALOG_NAME, SS_UDT_SCHEMA_NAME ve SS_UDT_ASSEMBLY_TYPE_NAME'dir.
Desteklenen Dönüşümler
SQL'den C veri tiplerine dönüştürülürken, SQL_C_WCHAR, SQL_C_BINARY ve SQL_C_CHAR hepsi SQL_SS_UDT'ye dönüştürülebilir. Ancak, ikili verilerin SQL_C_WCHAR ve SQL_C_CHAR SQL veri tiplerinden dönüştürüldüğünde altıgen bir diziye dönüştürüldüğünü unutmayın.
C'den SQL veri tiplerine dönüştürülürken, SQL_C_WCHAR, SQL_C_BINARY ve SQL_C_CHAR hepsi SQL_SS_UDT'ye dönüştürülebilir. Ancak, ikili verilerin SQL_C_WCHAR ve SQL_C_CHAR SQL veri tiplerinden dönüştürüldüğünde altıgen bir diziye dönüştürüldüğünü unutmayın.
Ayrıca Bkz.
SQL Server Yerel İstemci Özellikleri
ISSCommandWithParameters (OLE DB)