Metadata - Parameter dan Set Baris di SQL Server Native Client
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics Analytics
Platform System (PDW)
Topik ini menyediakan informasi tentang jenis dan jenis anggota berikut, terkait dengan tanggal dan peningkatan waktu OLE DB.
Struktur DBBINDING
ICommandWithParameters::GetParameterInfo
ICommandWithParameters::SetParameterInfo
IColumnsRowset::GetColumnsRowset
IColumnsInfo::GetColumnInfo
ICommandWithParameters::GetParameterInfo
Informasi berikut dikembalikan dalam struktur DBPARAMINFO melalui prgParamInfo:
Jenis Parameter | wType | ulParamSize | bPresisi | bScale | dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
---|---|---|---|---|---|
date | DBTYPE_DBDATE | 6 | 10 | 0 | Clear |
waktu | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Set |
smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Clear |
datetime | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Clear |
tanggalwaktu2 | DBTYPE_DBTIMESTAMP | 16 | 19,21..27 | 0..7 | Set |
tanggalwaktulewat | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26,28..34 | 0..7 | Set |
Perhatikan bahwa dalam beberapa kasus rentang nilai tidak berkelanjutan. Hal ini disebabkan oleh penambahan titik desimal ketika presisi pecahan lebih besar dari nol.
DBPARAMFLAGS_SS_ISVARIABLESCALE hanya valid saat tersambung ke server SQL Server 2008 (10.0.x) (atau yang lebih baru). DBPARAMFLAGS_SS_ISVARIABLESCALE tidak pernah diatur saat tersambung ke server tingkat bawah.
ICommandWithParameters::SetParameterInfo dan Jenis Parameter Tersirat
Informasi yang diberikan dalam struktur DBPARAMBINDINFO harus sesuai dengan yang berikut:
pwszDataSourceType (khusus penyedia) |
pwszDataSourceType (OLE DB generik) |
ulParamSize | bScale |
---|---|---|---|
DBTYPE_DATE | 6 | Diabaikan | |
date | DBTYPE_DBDATE | 6 | Diabaikan |
DBTYPE_DBTIME | 10 | Diabaikan | |
waktu | DBTYPE_DBTIME2 | 10 | 0..7 |
smalldatetime | 16 | Diabaikan | |
datetime | 16 | Diabaikan | |
datetime2 atau DBTYPE_DBTIMESTAMP | DBTYPE_DBTIMESTAMP | 16 | 0..7 |
tanggalwaktulewat | DBTYPE_DBTIMESTAMPOFFSET | 20 | 0..7 |
Parameter bPrecision diabaikan.
"DBPARAMFLAGS_SS_ISVARIABLESCALE" diabaikan saat mengirim data ke server. Aplikasi dapat memaksa penggunaan jenis aliran data tabular (TDS) warisan dengan menggunakan nama jenis khusus penyedia "datetime" dan "smalldatetime". Ketika tersambung ke server SQL Server 2008 (10.0.x) (atau yang lebih baru), format "datetime2" akan digunakan dan konversi server implisit akan terjadi, jika perlu, ketika nama jenis adalah "datetime2" atau "DBTYPE_DBTIMESTAMP". bScale diabaikan jika nama jenis spesifik penyedia "datetime" atau "smalldatetime" digunakan. Jika tidak, appication harus memastikan bahwa bScale diatur dengan benar. Aplikasi yang ditingkatkan dari MDAC dan SQL Server Native Client dari SQL Server 2005 (9.x) yang menggunakan "DBTYPE_DBTIMESTAMP" akan gagal jika mereka tidak mengatur bScale dengan benar. Saat terhubung ke instans server yang lebih lama dari SQL Server 2008 (10.0.x), nilai bScale selain 0 atau 3 dengan "DBTYPE_DBTIMESTAMP" adalah kesalahan dan E_FAIL akan dikembalikan.
Ketika ICommandWithParameters::SetParameterInfo tidak dipanggil, penyedia menyiratkan jenis server dari jenis pengikatan seperti yang ditentukan dalam IAccessor::CreateAccessor sebagai berikut:
Jenis Pengikatan Data | pwszDataSourceType (khusus penyedia) |
---|---|
DBTYPE_DATE | datetime2(0) |
DBTYPE_DBDATE | date |
DBTYPE_DBTIME | time(0) |
DBTYPE_DBTIME2 | time(7) |
DBTYPE_DBTIMESTAMP | datetime2(7) |
DBTYPE_DBTIMESTAMPOFFSET | datetimeoffset(7) |
IColumnsRowset::GetColumnsRowset
IColumnsRowset::GetColumnsRowset mengembalikan kolom berikut:
Jenis Kolom | DBCOLUMN_TYPE | DBCOLUM_COLUMNSIZE | DBCOLUMN_PRECISION | DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION | DBCOLUMN_FLAGS, DBCOLUMNFLAGS_SS_ISVARIABLESCALE |
---|---|---|---|---|---|
date | DBTYPE_DBDATE | 6 | 10 | 0 | Clear |
waktu | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Set |
smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Clear |
datetime | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Clear |
tanggalwaktu2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Set |
tanggalwaktulewat | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Set |
Dalam DBCOLUMN_FLAGS, DBCOLUMNFLAGS_ISFIXEDLENGTH selalu benar untuk jenis tanggal/waktu dan bendera berikut selalu salah:
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER
DBCOLUMNFLAGS_MAYDEFER
Bendera yang tersisa (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE, dan DBCOLUMNFLAGS_WRITEUNKNOWN) dapat diatur, tergantung pada bagaimana kolom ditentukan dan kueri aktual.
Bendera baru DBCOLUMNFLAGS_SS_ISVARIABLESCALE disediakan di DBCOLUMN_FLAGS untuk memungkinkan aplikasi menentukan jenis kolom server, di mana DBCOLUMN_TYPE DBTYPE_DBTIMESTAMP. DBCOLUMN_SCALE atau DBCOLUMN_DATETIMEPRECISION juga harus digunakan untuk mengidentifikasi jenis server.
DBCOLUMNFLAGS_SS_ISVARIABLESCALE hanya valid saat tersambung ke server SQL Server 2008 (10.0.x) (atau yang lebih baru). DBCOLUMNFLAGS_SS_ISVARIABLESCALE tidak terdefinisi saat tersambung ke server tingkat bawah.
IColumnsInfo::GetColumnInfo
Struktur DBCOLUMNINFO mengembalikan informasi berikut:
Jenis Parameter | wType | ulColumnSize | bPresisi | bScale | dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
---|---|---|---|---|---|
date | DBTYPE_DBDATE | 6 | 10 | 0 | Clear |
time(1..7) | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Set |
smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Clear |
datetime | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Clear |
tanggalwaktu2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Set |
tanggalwaktulewat | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Set |
Di dwFlags, DBCOLUMNFLAGS_ISFIXEDLENGTH selalu berlaku untuk jenis tanggal/waktu dan bendera berikut selalu salah:
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER, MAYDEFER
Bendera yang tersisa (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE, dan DBCOLUMNFLAGS_WRITEUNKNOWN) dapat diatur.
Bendera baru DBCOLUMNFLAGS_SS_ISVARIABLESCALE disediakan di dwFlags untuk memungkinkan aplikasi menentukan jenis kolom server, di mana wType DBTYPE_DBTIMESTAMP. bScale juga harus digunakan untuk mengidentifikasi jenis server.
Lihat Juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk