Delen via


Metagegevens - parameter en rijenset

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

OLE DB-stuurprogramma downloaden

Dit artikel bevat informatie over het volgende type en type leden, gerelateerd aan de datum- en tijdverbeteringen van OLE DB.

  • DBBINDING-structuur

  • ICommandWithParameters::GetParameterInfo

  • ICommandWithParameters::SetParameterInfo

  • IColumnsRowset::GetColumnsRowset

  • IColumnsInfo::GetColumnInfo

ICommandWithParameters::GetParameterInfo

De volgende informatie wordt geretourneerd in de DBPARAMINFO-structuur via prgParamInfo:

Parametertype wType- ulParamSize bScale- dwFlags-

DBPARAMFLAGS_SS_ISVARIABLESCALE
datum DBTYPE_DBDATE 6 10 0 Duidelijk
Tijd DBTYPE_DBTIME2 10 8, 10..16 0..7 Set
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Duidelijk
datum/tijd DBTYPE_DBTIMESTAMP 16 23 3 Duidelijk
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Set
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Set

In sommige gevallen zijn waardebereiken niet doorlopend. Dit komt door de toevoeging van een decimaalteken wanneer breuknauwkeurigheid groter is dan nul.

DBPARAMFLAGS_SS_ISVARIABLESCALE is alleen geldig wanneer deze is verbonden met een server met SQL Server 2008 (10.0.x) en latere versies. DBPARAMFLAGS_SS_ISVARIABLESCALE wordt nooit ingesteld wanneer er verbinding is met servers op een lager niveau.

ICommandWithParameters::SetParameterInfo en impliciete parametertypen

De informatie in de structuur DBPARAMBINDINFO moet voldoen aan het volgende:

pwszDataSourceType

(providerspecifiek)
pwszDataSourceType

(OLE DB algemeen)
ulParamSize bScale-
DBTYPE_DATE 6 Genegeerd
datum DBTYPE_DBDATE 6 Genegeerd
DBTYPE_DBTIME 10 Genegeerd
Tijd DBTYPE_DBTIME2 10 0..7
smalldatetime 16 Genegeerd
datum/tijd 16 Genegeerd
datetime2 of DBTYPE_DBTIMESTAMP DBTYPE_DBTIMESTAMP 16 0..7
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 0..7

De parameter bPrecision wordt genegeerd.

'DBPARAMFLAGS_SS_ISVARIABLESCALE' wordt genegeerd bij het verzenden van gegevens naar de server. Toepassingen kunnen het gebruik van verouderde TDS-typen (tabular-data stream) afdwingen met behulp van de providerspecifieke typenamen "datum/tijd" en "smalldatetime". Wanneer verbinding wordt gemaakt met servers met SQL Server 2008 (10.0.x) en latere versies, wordt de notatie 'datetime2' gebruikt en vindt er zo nodig een impliciete serverconversie plaats wanneer de typenaam 'datetime2' of 'DBTYPE_DBTIMESTAMP' is. bScale wordt genegeerd als de provider specifieke typenamen "datum/tijd" of "smalldatetime" worden gebruikt. Anders moeten toepassingen ervoor zorgen dat bScale- juist is ingesteld. Toepassingen die zijn bijgewerkt vanuit MDAC- en OLE DB-stuurprogramma voor SQL Server 2005 (9.x) die gebruikmaken van 'DBTYPE_DBTIMESTAMP' mislukken als ze niet bScale correct instellen. Wanneer u verbinding maakt met serverexemplaren ouder dan SQL Server 2008 (10.0.x), is een bScale andere waarde dan 0 of 3 met 'DBTYPE_DBTIMESTAMP' een fout en wordt E_FAIL geretourneerd.

Wanneer ICommandWithParameters::SetParameterInfo niet wordt aangeroepen, impliceert de provider het servertype van het bindingstype zoals opgegeven in IAccessor::CreateAccessor als volgt:

Bindingstype pwszDataSourceType

(providerspecifiek)
DBTYPE_DATE datetime2(0)
DBTYPE_DBDATE datum
DBTYPE_DBTIME time(0)
DBTYPE_DBTIME2 time(7)
DBTYPE_DBTIMESTAMP datetime2(7)
DBTYPE_DBTIMESTAMPOFFSET datetimeoffset(7)

IColumnsRowset::GetColumnsRowset

IColumnsRowset::GetColumnsRowset retourneert de volgende kolommen:

Kolomtype DBCOLUMN_TYPE DBCOLUMN_COLUMNSIZE DBCOLUMN_PRECISION DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION DBCOLUMN_FLAGS, DBCOLUMNFLAGS_SS_ISVARIABLESCALE
datum DBTYPE_DBDATE 6 10 0 Duidelijk
Tijd DBTYPE_DBTIME2 10 8, 10..16 0..7 Set
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Duidelijk
datum/tijd DBTYPE_DBTIMESTAMP 16 23 3 Duidelijk
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Set
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Set

In DBCOLUMN_FLAGS is DBCOLUMNFLAGS_ISFIXEDLENGTH altijd waar voor datum-/tijdtypen en zijn de volgende vlaggen altijd onwaar:

  • DBCOLUMNFLAGS_CACHEDEFERRED

  • DBCOLUMNFLAGS_ISBOOKMARK

  • DBCOLUMNFLAGS_ISCHAPTER

  • DBCOLUMNFLAGS_ISLONG

  • DBCOLUMNFLAGS_ISROWID

  • DBCOLUMNFLAGS_ISROWVER

  • DBCOLUMNFLAGS_MAYDEFER

De resterende vlaggen (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE en DBCOLUMNFLAGS_WRITEUNKNOWN) kunnen worden ingesteld, afhankelijk van de wijze waarop de kolom is gedefinieerd en de werkelijke query.

Er wordt een nieuwe vlag DBCOLUMNFLAGS_SS_ISVARIABLESCALE opgegeven in DBCOLUMN_FLAGS zodat een toepassing het servertype van kolommen kan bepalen, waarbij DBCOLUMN_TYPE wordt DBTYPE_DBTIMESTAMP. DBCOLUMN_SCALE of DBCOLUMN_DATETIMEPRECISION moet ook worden gebruikt om het servertype te identificeren.

DBCOLUMNFLAGS_SS_ISVARIABLESCALE is alleen geldig wanneer er verbinding is met een server met SQL Server 2008 (10.0.x) en latere versies. DBCOLUMNFLAGS_SS_ISVARIABLESCALE is niet gedefinieerd wanneer deze is verbonden met servers op een lager niveau.

IColumnsInfo::GetColumnInfo

DBCOLUMNINFO-structuur retourneert de volgende informatie:

Parametertype wType- ulColumnSize bScale- dwFlags-

DBPARAMFLAGS_SS_ISVARIABLESCALE
datum DBTYPE_DBDATE 6 10 0 Duidelijk
time(1..7) DBTYPE_DBTIME2 10 8, 10..16 0..7 Set
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Duidelijk
datum/tijd DBTYPE_DBTIMESTAMP 16 23 3 Duidelijk
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Set
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Set

In dwFlags-is DBCOLUMNFLAGS_ISFIXEDLENGTH altijd waar voor datum-/tijdtypen en zijn de volgende vlaggen altijd onwaar:

  • DBCOLUMNFLAGS_CACHEDEFERRED

  • DBCOLUMNFLAGS_ISBOOKMARK

  • DBCOLUMNFLAGS_ISCHAPTER

  • DBCOLUMNFLAGS_ISLONG

  • DBCOLUMNFLAGS_ISROWID

  • DBCOLUMNFLAGS_ISROWVER, MAYDEFER

De resterende vlaggen (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE en DBCOLUMNFLAGS_WRITEUNKNOWN) kunnen worden ingesteld.

Er wordt een nieuwe vlag DBCOLUMNFLAGS_SS_ISVARIABLESCALE opgegeven in dwFlags- zodat een toepassing het servertype van kolommen kan bepalen, waarbij wType- wordt DBTYPE_DBTIMESTAMP. bScale- moet ook worden gebruikt om het servertype te identificeren.

Zie ook

ondersteuning voor gegevenstypen voor verbeteringen van OLE DB-datum en -tijd