Bagikan melalui


Metadata - Parameter dan Set Baris di SQL Server Native Client

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform 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

Metadata (OLE DB)