Aracılığıyla paylaş


SQL Server Yerel İstemcisinde Seyrek Sütunlar Desteği

Şunlar için geçerlidir: Sql ServerAzure SQL VeritabanıAzure Synapse AnalyticsAnalytics Platform Sistemi (PDW)Azure SQL Veritabanı

Önemli

SQL Server Native Client (SNAC) şu şekilde 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 için Microsoft ODBC Sürücüsünü
  • SQL Server için Microsoft OLE DB Sürücüsü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 Yerel İstemcisi seyrek sütunları destekler. SQL Server'daki seyrek sütunlar hakkında daha fazla bilgi için bkz. Seyrek Sütunları Kullanma ve Sütun Kümelerini Kullanma.

SQL Server Yerel İstemcisi'nde seyrek sütun desteği hakkında daha fazla bilgi için bkz. Seyrek Sütun Desteği (ODBC) ve Seyrek Sütun Desteği (OLE DB).

Seyrek Sütunlar ve SQL Server Yerel İstemcisi için Kullanıcı Senaryoları

Aşağıdaki tabloda seyrek sütunlara sahip SQL Server Yerel İstemci kullanıcıları için yaygın kullanıcı senaryoları özetlenmiştir:

Senaryo Davranış
tablo veya IOpenRowset::OpenRowset'ten * öğesini seçin. seyrek column_setüyesi olmayan tüm sütunların yanı sıra seyrek column_setüyesi olan tüm null olmayan sütunların değerlerini içeren bir XML sütununu döndürür.
Bir sütuna ada göre başvuruda bulunur. Seyrek sütun durumundan veya column_set üyeliğinden bağımsız olarak sütuna başvurulabilir.
Hesaplanan XML sütunu aracılığıyla üye sütunlarına column_set erişin. Seyrek column_set üyesi olan sütunlara ada göre column_set seçilerek erişilebilir ve column_set sütunundaki XML güncelleştirilerek değerler eklenip güncelleştirilebilir.

Değerin column_set sütunların şemasına uyması gerekir.
NULL veya '%' (ODBC) sütun arama deseniyle SQLColumns aracılığıyla tablodaki tüm sütunların meta verilerini alma; veya sütun kısıtlaması (OLE DB) olmadan DBSCHEMA_COLUMNS şema satır kümesi aracılığıyla. column_setüyesi olmayan tüm sütunlar için bir satır döndürür. Tabloda seyrek column_setvarsa, tablo için bir satır döndürülür.

Bunun bir column_setüyesi olan sütunlar için meta verileri döndürmediğini unutmayın.
bir column_setseyreklik veya üyelik fark etmeksizin tüm sütunlar için meta verileri alın. Bu, çok fazla sayıda satır döndürebilir. Tanımlayıcı alanı SQL_SOPT_SS_NAME_SCOPE SQL_SS_NAME_SCOPE_EXTENDED olarak ayarlayın ve SQLColumns (ODBC) çağırın.

DBSCHEMA_COLUMNS_EXTENDED şema satır kümesi (OLE DB) için IDBSchemaRowset::GetRowset çağrısı yapın.

Bu senaryo, SQL Server 2008 (10.0.x) öncesi bir sürümden SQL Server Yerel İstemcisi kullanan bir uygulamadan mümkün değildir. Ancak, böyle bir uygulama sistem görünümlerini doğrudan sorgulayabilir.
Meta verileri yalnızca bir column_setüyesi olan sütunlar için alın. Bu, çok fazla sayıda satır döndürebilir. tanımlayıcı alanı SQL_SOPT_SS_NAME_SCOPE SQL_SS_NAME_SCOPE_SPARSE_COLUMN_SET olarak ayarlayın ve SQLColumns (ODBC) öğesini çağırın.

DBSCHEMA_SPARSE_COLUMN_SET şema satır kümesi (OLE DB) için IDBSchemaRowset::GetRowset çağrısı yapın.

Bu senaryo, SQL Server 2008 (10.0.x) öncesi bir sürümden SQL Server Yerel İstemcisi kullanan bir uygulamadan mümkün değildir. Ancak, böyle bir uygulama sistem görünümlerini sorgulayabilir.
Sütunun seyrek olup olmadığını belirleyin. SQLColumns sonuç kümesinin (ODBC) SS_IS_SPARSE sütununa başvurun.

DBSCHEMA_COLUMNS şema satır kümesinin (OLE DB) SS_IS_SPARSE sütununa başvurun.

Bu senaryo, SQL Server 2008 (10.0.x) öncesi bir sürümden SQL Server Yerel İstemcisi kullanan bir uygulamadan mümkün değildir. Ancak, böyle bir uygulama sistem görünümlerini sorgulayabilir.
Sütunun column_setolup olmadığını belirleyin. SQLColumns sonuç kümesinin SS_IS_COLUMN_SET sütununa başvurun. Veya SQL Server'a özgü sütun özniteliğine SQL_CA_SS_IS_COLUMN_SET (ODBC) başvurun.

DBSCHEMA_COLUMNS şema satır kümesinin SS_IS_COLUMN_SET sütununa başvurun. Veya, IColumnsrowset::GetColumnsRowset::GetColumnsRowset tarafından döndürülen satır kümesinde IColumnsinfo::GetColumnInfo veya DBCOLUMNFLAGS tarafından döndürülen dwFlags başvurun. column_set sütunlar için DBCOLUMNFLAGS_SS_ISCOLUMNSET ayarlanır (OLE DB).

Bu senaryo, SQL Server 2008 (10.0.x) öncesi bir sürümden SQL Server Yerel İstemcisi kullanan bir uygulamadan mümkün değildir. Ancak, böyle bir uygulama sistem görünümlerini sorgulayabilir.
column_setolmayan bir tablo için BCP'ye göre seyrek sütunları içeri ve dışarı aktarma. SQL Server Yerel İstemcisi'nin önceki sürümlerinde davranışta değişiklik yok.
column_setiçeren bir tablo için BCP'ye göre seyrek sütunları içeri ve dışarı aktarma. column_set XML ile aynı şekilde içeri ve dışarı aktarılır; yani, varbinary(max) ikili tür olarak bağlıysa veya karakter veya wchar türü olarak bağlıysa nvarchar(max).

Seyrek column_set üyesi olan sütunlar ayrı sütunlar olarak dışarı aktarılmaz; yalnızca column_setdeğerinde dışarı aktarılırlar.
BCP için sorgu davranışını . SQL Server Yerel İstemcisi'nin önceki sürümlerinden açıkça adlandırılmış sütunların işlenmesinde değişiklik yok.

Farklı şemalara sahip tablolar arasında içeri ve dışarı aktarmayı içeren senaryolar özel işleme gerektirebilir.

BCP hakkında daha fazla bilgi için bu konunun devamında yer alan Seyrek Sütunlar için Toplu Kopyalama (BCP) Desteği bölümüne bakın.

İstemci Davranışını Down-Level

Alt düzey istemciler yalnızca SQLColumns ve DBSCHEMA_COLUMNS için seyrek column_set üyesi olmayan sütunlar için meta veriler döndürür. SQL Server 2008 (10.0.x) Yerel İstemcisi'nde kullanıma sunulan ek OLE DB şema satır kümeleri kullanılamaz ve SQL_SOPT_SS_NAME_SCOPE aracılığıyla ODBC'deki SQLColumn'larda yapılan değişiklikler kullanılamaz.

Alt düzey istemciler, seyrek column_set üyeleri olan sütunlara ada göre erişebilir ve column_set sütununa SQL Server 2005 (9.x) istemcileri için XML sütunu olarak erişilebilir.

Seyrek Sütunlar için Toplu Kopyalama (BCP) Desteği

Seyrek sütunlar veya column_set özellikleri için ODBC veya OLE DB'de BCP API'sinde değişiklik yoktur.

Bir tabloda column_setvarsa, seyrek sütunlar ayrı sütunlar olarak işlenmez. Tüm seyrek sütunların değerleri, xml sütunuyla aynı şekilde dışarı aktarılan column_setdeğerine eklenir; yani, varbinary(max) ikili tür olarak bağlıysa veya karakter veya wchar türü olarak bağlıysa nvarchar(max)). İçeri aktarmada, column_set değeri column_setşemasına uygun olmalıdır.

sorgu işlemleri için açıkça başvuruda bulunan sütunların işlenme yönteminde bir değişiklik yoktur. column_set sütunlar XML sütunlarıyla aynı davranışa sahiptir ve seyreklik, adlandırılmış seyrek sütunların işlenmesi üzerinde hiçbir etkiye sahip değildir.

Ancak dışarı aktarma için queryout kullanılırsa ve adla ayarlanan seyrek sütunun üyesi olan seyrek sütunlara başvurursanız, benzer şekilde yapılandırılmış bir tabloya doğrudan içeri aktarma gerçekleştiremezsiniz. Bunun nedeni BCP'nin içeri aktarma işlemi için * seçme işlemiyle tutarlı meta verileri kullanması ve column_set üye sütunlarını bu meta verilerle eşleştirememesidir. column_set üye sütunlarını tek tek içeri aktarmak için, tabloda istenen column_set sütunlarına başvuran bir görünüm tanımlamanız ve görünümü kullanarak içeri aktarma işlemini gerçekleştirmeniz gerekir.

Ayrıca Bkz.

SQL Server Yerel İstemci Programlama