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