Delen via


Metagegevens - parameter en rijenset in SQL Server Native Client

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

Dit onderwerp 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 er verbinding is met een SQL Server 2008-server (10.0.x) (of hoger). 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 is gemaakt met SQL Server 2008-servers (10.0.x) (of hoger), 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 SQL Server Native Client van 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 DBCOLUM_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 deze is verbonden met een SQL Server 2008-server (10.0.x) (of hoger). 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

METAGEGEVENS (OLE DB)