Sdílet prostřednictvím


Metadata – parametr a sada řádků v nativním klientovi SQL Serveru

platí pro:SQL ServerAzure SQL Databaseazure SQL Managed InstanceAzure Synapse AnalyticsPlatform Platform System (PDW)

Toto téma obsahuje informace o následujícím typu a členech typů, které souvisejí s vylepšeními data a času OLE DB.

  • DBBINDING – struktura

  • ICommandWithParameters::GetParameterInfo

  • ICommandWithParameters::SetParameterInfo

  • IColumnsRowset::GetColumnsRowset

  • IColumnsInfo::GetColumnInfo

ICommandWithParameters::GetParameterInfo

Následující informace se vrátí ve struktuře DBPARAMINFO prostřednictvím prgParamInfo:

Typ parametru wType ulParamSize bPrecision bScale dwFlags

DBPARAMFLAGS_SS_ISVARIABLESCALE
rande DBTYPE_DBDATE 6 10 0 Jasný
Čas DBTYPE_DBTIME2 10 8, 10..16 0..7 Nastavit
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Jasný
datetime DBTYPE_DBTIMESTAMP 16 23 3 Jasný
datetime2 DBTYPE_DBTIMESTAMP 16 19,21..27 0..7 Nastavit
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26,28..34 0..7 Nastavit

Všimněte si, že v některých případech rozsahy hodnot nejsou souvislé. Důvodem je sčítání desetinné čárky, pokud je desetinná přesnost větší než nula.

DBPARAMFLAGS_SS_ISVARIABLESCALE je platný pouze při připojení k serveru SQL Server 2008 (10.0.x) (nebo novějším). DBPARAMFLAGS_SS_ISVARIABLESCALE se nikdy nenastaví při připojení k serverům nižší úrovně.

ICommandWithParameters::SetParameterInfo a implicitní typy parametrů

Informace uvedené ve struktuře DBPARAMBINDINFO musí odpovídat následujícímu:

pwszDataSourceType

(konkrétní poskytovatel)
pwszDataSourceType

(OBECNÉ OLE DB)
ulParamSize bScale
DBTYPE_DATE 6 Ignorovaný
rande DBTYPE_DBDATE 6 Ignorovaný
DBTYPE_DBTIME 10 Ignorovaný
Čas DBTYPE_DBTIME2 10 0..7
smalldatetime 16 Ignorovaný
datetime 16 Ignorovaný
datetime2 nebo DBTYPE_DBTIMESTAMP DBTYPE_DBTIMESTAMP 16 0..7
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 0..7

Parametr bPrecision se ignoruje.

Při odesílání dat na server se ignoruje "DBPARAMFLAGS_SS_ISVARIABLESCALE". Aplikace můžou vynutit použití starších typů datových proudů tabulkových dat (TDS) pomocí názvů typů specifických pro zprostředkovatele "datetime" a "smalldatetime". Při připojení k serverům SQL Server 2008 (10.0.x) (nebo novější) se použije formát "datetime2" a v případě potřeby dojde k implicitní převodu serveru, pokud je název typu "datetime2" nebo "DBTYPE_DBTIMESTAMP". bScale se ignoruje, pokud se použijí názvy typů specifických pro poskytovateledatetime nebosmalldatetime. Jinak musí aplikace zajistit správné nastavení bScale. Aplikace upgradované z MDAC a nativního klienta SQL Serveru z SQL Serveru 2005 (9.x), které používají "DBTYPE_DBTIMESTAMP", selžou, pokud nenastaví bScale správně. Pokud jste připojení k instancím serveru starším než SQL Server 2008 (10.0.x), bScale jinou než 0 nebo 3 s hodnotou "DBTYPE_DBTIMESTAMP" je chyba a E_FAIL se vrátí.

Pokud ICommandWithParameters::SetParameterInfo není volána, poskytovatel implikuje typ serveru z typu vazby, jak je uvedeno v IAccessor::CreateAccessor následujícím způsobem:

Typ vazby pwszDataSourceType

(konkrétní poskytovatel)
DBTYPE_DATE datetime2(0)
DBTYPE_DBDATE rande
DBTYPE_DBTIME time(0)
DBTYPE_DBTIME2 time(7)
DBTYPE_DBTIMESTAMP datetime2(7)
DBTYPE_DBTIMESTAMPOFFSET datetimeoffset(7)

IColumnsRowset::GetColumnsRowset

IColumnsRowset::GetColumnsRowset vrátí následující sloupce:

Typ sloupce DBCOLUMN_TYPE DBCOLUM_COLUMNSIZE DBCOLUMN_PRECISION DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION DBCOLUMN_FLAGS, DBCOLUMNFLAGS_SS_ISVARIABLESCALE
rande DBTYPE_DBDATE 6 10 0 Jasný
Čas DBTYPE_DBTIME2 10 8, 10..16 0..7 Nastavit
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Jasný
datetime DBTYPE_DBTIMESTAMP 16 23 3 Jasný
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Nastavit
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Nastavit

V DBCOLUMN_FLAGS platí DBCOLUMNFLAGS_ISFIXEDLENGTH vždy pro typy data a času a následující příznaky jsou vždy false:

  • DBCOLUMNFLAGS_CACHEDEFERRED

  • DBCOLUMNFLAGS_ISBOOKMARK

  • DBCOLUMNFLAGS_ISCHAPTER

  • DBCOLUMNFLAGS_ISLONG

  • DBCOLUMNFLAGS_ISROWID

  • DBCOLUMNFLAGS_ISROWVER

  • DBCOLUMNFLAGS_MAYDEFER

Zbývající příznaky (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE a DBCOLUMNFLAGS_WRITEUNKNOWN) je možné nastavit v závislosti na tom, jak je sloupec definovaný a jaký je skutečný dotaz.

V DBCOLUMN_FLAGS je k dispozici nový DBCOLUMNFLAGS_SS_ISVARIABLESCALE příznak, který aplikaci umožní určit typ serveru sloupců, kde DBCOLUMN_TYPE je DBTYPE_DBTIMESTAMP. DBCOLUMN_SCALE nebo DBCOLUMN_DATETIMEPRECISION musí být také použity k identifikaci typu serveru.

DBCOLUMNFLAGS_SS_ISVARIABLESCALE je platný pouze při připojení k serveru SQL Server 2008 (10.0.x) (nebo novějším). DBCOLUMNFLAGS_SS_ISVARIABLESCALE není definována při připojení k serverům nižší úrovně.

IColumnsInfo::GetColumnInfo

DbCOLUMNINFO vrátí následující informace:

Typ parametru wType ulColumnSize bPrecision bScale dwFlags

DBPARAMFLAGS_SS_ISVARIABLESCALE
rande DBTYPE_DBDATE 6 10 0 Jasný
time(1..7) DBTYPE_DBTIME2 10 8, 10..16 0..7 Nastavit
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Jasný
datetime DBTYPE_DBTIMESTAMP 16 23 3 Jasný
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Nastavit
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Nastavit

V dwFlags, DBCOLUMNFLAGS_ISFIXEDLENGTH vždy platí pro typy data a času a následující příznaky jsou vždy false:

  • DBCOLUMNFLAGS_CACHEDEFERRED

  • DBCOLUMNFLAGS_ISBOOKMARK

  • DBCOLUMNFLAGS_ISCHAPTER

  • DBCOLUMNFLAGS_ISLONG

  • DBCOLUMNFLAGS_ISROWID

  • DBCOLUMNFLAGS_ISROWVER, MAYDEFER

Můžete nastavit zbývající příznaky (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE a DBCOLUMNFLAGS_WRITEUNKNOWN).

V dwFlags je k dispozici nový DBCOLUMNFLAGS_SS_ISVARIABLESCALE příznak, který aplikaci umožní určit typ serveru sloupců, kde wType je DBTYPE_DBTIMESTAMP. bScale je potřeba použít také k identifikaci typu serveru.

Viz také

metadata (OLE DB)