Pemetaan Jenis Data Klien Asli SQL Server di Set Baris dan Parameter

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

Dalam kumpulan baris dan sebagai nilai parameter, penyedia SQL Server Native Client OLE DB mewakili data SQL Server dengan menggunakan jenis data yang ditentukan OLE DB berikut, yang dilaporkan dalam fungsi IColumnsInfo::GetColumnInfo dan ICommandWithParameters::GetParameterInfo.

Tipe data SQL Server Jenis data OLE DB
bigint DBTYPE_I8
biner DBTYPE_BYTES
bit DBTYPE_BOOL
Char DBTYPE_STR
datetime DBTYPE_DBTIMESTAMP
datetime2 DBTYPE_DBTIME2
desimal DBTYPE_NUMERIC
float DBTYPE_R8
gambar DBTYPE_BYTES
int DBTYPE_I4
Uang DBTYPE_CY
nchar DBTYPE_WSTR
ntext DBTYPE_WSTR
numerik DBTYPE_NUMERIC
nvarchar DBTYPE_WSTR
real DBTYPE_R4
smalldatetime DBTYPE_DBTIMESTAMP
smallint DBTYPE_I2
smallmoney DBTYPE_CY
aql_variant DBTYPE_VARIANT, DBTYPE_SQLVARIANT
nama sysname DBTYPE_WSTR
text DBTYPE_STR
timestamp DBTYPE_BYTES
kecil DBTYPE_UI1
UDT DBTYPE_UDT
pengidentifikasi unik DBTYPE_GUID
varbinary DBTYPE_BYTES
varchar DBTYPE_STR
XML DBTYPE_XML

Penyedia SQL Server Native Client OLE DB mendukung konversi data yang diminta konsumen seperti yang ditunjukkan dalam ilustrasi.

Objek sql_variant dapat menyimpan data dari jenis data SQL Server apa pun kecuali teks, ntext, gambar, varchar(max), nvarchar(max), varbinary(max), xml, tanda waktu, dan jenis yang ditentukan pengguna Microsoft .NET Framework. Instans data sql_variant juga tidak dapat memiliki sql_variant sebagai jenis data dasar yang mendasarnya. Misalnya, kolom dapat berisi nilai smallint untuk beberapa baris, nilai float untuk baris lain, dan nilai char/nchar di sisanya.

Catatan

Jenis data sql_variant mirip dengan jenis data Varian di Visual Basic dan DBTYPE_VARIANT, DBTYPE_SQLVARIANT di OLEDB.

Ketika data sql_variant diambil sebagai DBTYPE_VARIANT, data tersebut dimasukkan ke dalam struktur VARIAN dalam buffer. Tetapi subjenis dalam struktur VARIAN mungkin tidak memetakan ke subjenis yang ditentukan dalam jenis data sql_variant . Data sql_variant kemudian harus diambil sebagai DBTYPE_SQLVARIANT agar semua subjenis cocok.

Jenis Data DBTYPE_SQLVARIANT

Untuk mendukung jenis data sql_variant , penyedia SQL Server Native Client OLE DB mengekspos jenis data khusus penyedia yang disebut DBTYPE_SQLVARIANT. Saat sql_variant data diambil sebagai DBTYPE_SQLVARIANT, data tersebut disimpan dalam struktur SSVARIANT khusus penyedia. Struktur SSVARIANT berisi semua subjenis yang cocok dengan subjenis tipe data sql_variant .

Properti sesi SSPROP_ALLOWNATIVEVARIANT juga harus diatur ke TRUE.

SSPROP_ALLOWNATIVEVARIANT Properti Khusus Penyedia

Dalam mengambil data, Anda dapat menentukan secara eksplisit jenis data apa yang harus dikembalikan untuk kolom atau untuk parameter. IColumnsInfo juga dapat digunakan untuk mendapatkan informasi kolom dan menggunakannya untuk melakukan pengikatan. Ketika IColumnsInfo digunakan untuk mendapatkan informasi kolom untuk tujuan pengikatan, jika properti sesi SSPROP_ALLOWNATIVEVARIANT FALSE (nilai default), DBTYPE_VARIANT dikembalikan untuk kolom sql_variant . Jika properti SSPROP_ALLOWNATIVEVARIANT false DBTYPE_SQLVARIANT tidak didukung. Jika properti SSPROP_ALLOWNATIVEVARIANT diatur ke TRUE, jenis kolom dikembalikan sebagai DBTYPE_SQLVARIANT, dalam hal ini buffer akan menyimpan struktur SSVARIANT. Dalam mengambil data sql_variant sebagai DBTYPE_SQLVARIANT, properti sesi SSPROP_ALLOWNATIVEVARIANT harus diatur ke TRUE.

properti SSPROP_ALLOWNATIVEVARIANT adalah bagian dari kumpulan properti DBPROPSET_SQLSERVERSESSION khusus penyedia, dan merupakan properti sesi.

DBTYPE_VARIANT berlaku untuk semua penyedia OLE DB lainnya.

SSPROP_ALLOWNATIVEVARIANT

SSPROP_ALLOWNATIVEVARIANT adalah properti sesi dan merupakan bagian dari kumpulan properti DBPROPSET_SQLSERVERSESSION.

ID Properti Deskripsi
SSPROP_ALLOWNATIVEVARIANT Jenis: VT_BOOL

R/W: Baca/Tulis

Default: VARIANT_FALSE

Deskripsi: Menentukan apakah data yang diambil adalah sebagai DBTYPE_VARIANT atau DBTYPE_SQLVARIANT.

VARIANT_TRUE: Jenis kolom dikembalikan sebagai DBTYPE_SQLVARIANT dalam hal ini buffer akan menyimpan struktur SSVARIANT.

VARIANT_FALSE: Jenis kolom dikembalikan sebagai DBTYPE_VARIANT dan buffer akan memiliki struktur VARIAN.

Lihat Juga

Tipe Data (OLE DB)