Dukungan Kolom Jarang di SQL Server Native Client (OLE DB)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Penting

SQL Server Native Client (sering disingkat SNAC) telah dihapus dari SQL Server 2022 (16.x) dan SQL Server Management Studio 19 (SSMS). Penyedia SQL Server Native Client OLE DB (SQLNCLI atau SQLNCLI11) dan Penyedia Microsoft OLE DB warisan untuk SQL Server (SQLOLEDB) tidak direkomendasikan untuk pengembangan baru. Beralih ke Microsoft OLE DB Driver (MSOLEDBSQL) baru untuk SQL Server ke depannya.

Topik ini menyediakan informasi tentang dukungan SQL Server Native Client OLE DB untuk kolom jarang. Untuk informasi selengkapnya tentang kolom jarang, lihat Dukungan Kolom Jarang di SQL Server Native Client. Untuk sampel, lihat Kolom Tampilan dan Metadata Katalog untuk Kolom Jarang (OLE DB).

Metadata Pernyataan OLE DB

Dimulai dengan SQL Server 2008 (10.0.x), nilai bendera DBCOLUMNFLAGS baru, DBCOLUMNFLAGS_SS_ISCOLUMNSET, tersedia. Nilai ini harus diatur untuk kolom yang column_set nilai. Bendera DBCOLUMNFLAGS dapat diambil melalui parameter dwFlags IColumnsInfo::GetColumnsInfo dan kolom DBCOLUMN_FLAGS set baris yang dikembalikan oleh IColumnsRowset::GetColumnsRowset.

Metadata Katalog OLE DB

Dua kolom khusus SQL Server tambahan telah ditambahkan ke DBSCHEMA_COLUMNS.

Nama kolom Jenis Data Nilai/komentar
SS_IS_SPARSE DBTYPE_BOOL Jika kolom adalah kolom jarang, kolom ini memiliki nilai VARIANT_TRUE; jika tidak, VARIANT_FALSE.
SS_IS_COLUMN_SET DBTYPE_BOOL Jika kolom adalah kolom column_set jarang, kolom ini memiliki nilai VARIANT_TRUE; jika tidak, VARIANT_FALSE.

Dua kumpulan baris skema tambahan juga telah ditambahkan. Kumpulan baris ini memiliki struktur yang sama dengan DBSCHEMA_COLUMNS tetapi mengembalikan konten yang berbeda. DBSCHEMA_COLUMNS_EXTENDED mengembalikan semua kolom terlepas dari keanggotaan column_set . DBSCHEMA_SPARSE_COLUMN_SET hanya mengembalikan kolom yang merupakan anggota column_set jarang.

Perilaku DataTypeCompatibility OLE DB

Perilaku dengan DataTypeCompatibility=80 (dalam string koneksi) konsisten dengan klien SQL Server 2000 (8.x), sebagai berikut:

  • Kumpulan baris skema baru tidak terlihat, dan tidak ada baris untuknya dalam kumpulan baris set baris skema.

  • Kolom baru dalam set baris KOLOM tidak terlihat.

  • DBCOLUMNFLAGS_SS_ISCOLUMNSET tidak diatur untuk kolom column_set .

  • DBCOMPUTEMODE_NOTCOMPUTED diatur untuk kolom column_set .

Dukungan OLE DB untuk Kolom Jarang

Antarmuka OLE DB berikut dimodifikasi di SQL Server Native Client untuk mendukung kolom jarang:

Jenis atau fungsi anggota Deskripsi
IColumnsInfo::GetColumnsInfo Nilai bendera DBCOLUMNFLAGS baru DBCOLUMNFLAGS_SS_ISCOLUMNSET diatur untuk kolom column_set di dwFlags.

DBCOLUMNFLAGS_WRITE diatur untuk kolom column_set .
IColumsRowset::GetColumnsRowset Nilai bendera DBCOLUMNFLAGS baru, DBCOLUMNFLAGS_SS_ISCOLUMNSET, diatur untuk kolom column_set di DBCOLUMN_FLAGS.

DBCOLUMN_COMPUTEMODE diatur ke DBCOMPUTEMODE_DYNAMIC untuk kolom column_set .
IDBSchemaRowset::GetSchemaRowset DBSCHEMA_COLUMNS mengembalikan dua kolom baru: SS_IS_COLUMN_SET dan SS_IS_SPARSE.

DBSCHEMA_COLUMNS hanya mengembalikan kolom yang bukan anggota column_set.

Dua kumpulan baris skema baru telah ditambahkan: DBSCHEMA_COLUMNS_EXTENDED akan mengembalikan semua kolom terlepas dari jarangnya keanggotaan column_set . DBSCHEMA_SPARSE_COLUMN_SET hanya mengembalikan kolom yang merupakan anggota column_set. Kumpulan baris baru ini memiliki kolom dan batasan yang sama dengan DBSCHEMA_COLUMNS.
IDBSchemaRowset::GetSchemas IDBSchemaRowset::GetSchemas menyertakan GUID untuk kumpulan baris baru DBSCHEMA_COLUMNS_EXTENDED dan DBSCHEMA_SPARSE_COLUMN_SET dalam daftar set baris skema yang tersedia.
ICommand::Execute Jika pilih * daritabel digunakan, kolom tersebut mengembalikan semua kolom yang bukan anggota column_set jarang, ditambah kolom XML yang berisi nilai semua kolom non-null yang merupakan anggota column_set jarang, jika ada.
IOpenRowset::OpenRowset IOpenRowset::OpenRowset mengembalikan set baris dengan kolom yang sama dengan ICommand::Execute, dengan kueri pilih * pada tabel yang sama.
ITableDefinition Tidak ada perubahan pada antarmuka ini untuk kolom jarang atau untuk kolom column_set . Aplikasi yang harus membuat modifikasi skema harus menjalankan Transact-SQL yang sesuai secara langsung.

Lihat Juga

Klien Asli SQL Server (OLE DB)