Dela via


Metadata – parameter och raduppsättning

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Ladda ned OLE DB-drivrutins

Den här artikeln innehåller information om följande typ- och typmedlemmar, relaterade till ole db-datum- och tidsförbättringarna.

  • DBBINDING-struktur

  • ICommandWithParameters::GetParameterInfo

  • ICommandWithParameters::SetParameterInfo

  • IColumnsRowset::GetColumnsRowset

  • IColumnsInfo::GetColumnInfo

ICommandWithParameters::GetParameterInfo

Följande information returneras i DBPARAMINFO-strukturen via prgParamInfo:

Parametertyp wType ulParamSize bPrecision bScale dwFlags

DBPARAMFLAGS_SS_ISVARIABLESCALE
datum DBTYPE_DBDATE 6 10 0 Klar
Tid DBTYPE_DBTIME2 10 8, 10..16 0..7 Ställa
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Klar
datetime DBTYPE_DBTIMESTAMP 16 23 3 Klar
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Ställa
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Ställa

Observera att värdeintervall i vissa fall inte är kontinuerliga. Detta beror på att en decimalpunkt läggs till när bråkprecisionen är större än noll.

DBPARAMFLAGS_SS_ISVARIABLESCALE är endast giltig när den är ansluten till en server som kör SQL Server 2008 (10.0.x) och senare versioner. DBPARAMFLAGS_SS_ISVARIABLESCALE ställs aldrig in när den är ansluten till servrar på nednivå.

ICommandWithParameters::SetParameterInfo och implicita parametertyper

Informationen i DBPARAMBINDINFO-strukturen måste överensstämma med följande:

pwszDataSourceType

(providerspecifik)
pwszDataSourceType

(ALLMÄNT OLE DB)
ulParamSize bScale
DBTYPE_DATE 6 Ignoreras
datum DBTYPE_DBDATE 6 Ignoreras
DBTYPE_DBTIME 10 Ignoreras
Tid DBTYPE_DBTIME2 10 0..7
smalldatetime 16 Ignoreras
datetime 16 Ignoreras
datetime2 eller DBTYPE_DBTIMESTAMP DBTYPE_DBTIMESTAMP 16 0..7
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 0..7

Parametern bPrecision ignoreras.

"DBPARAMFLAGS_SS_ISVARIABLESCALE" ignoreras när data skickas till servern. Program kan tvinga användning av äldre TDS-typer (tabular-data stream) med hjälp av de providerspecifika typnamnen "datetime" och "smalldatetime". När du är ansluten till servrar som kör SQL Server 2008 (10.0.x) och senare versioner används formatet "datetime2" och en implicit serverkonvertering sker om det behövs när typnamnet är "datetime2" eller "DBTYPE_DBTIMESTAMP". bScale ignoreras om providerspecifika typnamn "datetime" eller "smalldatetime" används. Annars måste program se till att bScale- har angetts korrekt. Program som uppgraderats från MDAC- och OLE DB-drivrutinen för SQL Server från SQL Server 2005 (9.x) som använder "DBTYPE_DBTIMESTAMP" misslyckas om de inte anger bSkala korrekt. När du är ansluten till serverinstanser tidigare än SQL Server 2008 (10.0.x) är ett bSkala annat värde än 0 eller 3 med "DBTYPE_DBTIMESTAMP" ett fel och E_FAIL returneras.

När ICommandWithParameters::SetParameterInfo inte anropas antyder providern servertypen från bindningstypen enligt vad som anges i IAccessor::CreateAccessor enligt följande:

Bindningstyp pwszDataSourceType

(providerspecifik)
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 returnerar följande kolumner:

Kolumntyp DBCOLUMN_TYPE DBCOLUMN_COLUMNSIZE DBCOLUMN_PRECISION DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION DBCOLUMN_FLAGS, DBCOLUMNFLAGS_SS_ISVARIABLESCALE
datum DBTYPE_DBDATE 6 10 0 Klar
Tid DBTYPE_DBTIME2 10 8, 10..16 0..7 Ställa
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Klar
datetime DBTYPE_DBTIMESTAMP 16 23 3 Klar
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Ställa
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Ställa

I DBCOLUMN_FLAGS är DBCOLUMNFLAGS_ISFIXEDLENGTH alltid sant för datum-/tidstyper och följande flaggor är alltid falska:

  • DBCOLUMNFLAGS_CACHEDEFERRED

  • DBCOLUMNFLAGS_ISBOOKMARK

  • DBCOLUMNFLAGS_ISCHAPTER

  • DBCOLUMNFLAGS_ISLONG

  • DBCOLUMNFLAGS_ISROWID

  • DBCOLUMNFLAGS_ISROWVER

  • DBCOLUMNFLAGS_MAYDEFER

Återstående flaggor (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE och DBCOLUMNFLAGS_WRITEUNKNOWN) kan anges, beroende på hur kolumnen definieras och den faktiska frågan.

En ny flagga DBCOLUMNFLAGS_SS_ISVARIABLESCALE finns i DBCOLUMN_FLAGS så att ett program kan fastställa servertypen för kolumner, där DBCOLUMN_TYPE är DBTYPE_DBTIMESTAMP. DBCOLUMN_SCALE eller DBCOLUMN_DATETIMEPRECISION måste också användas för att identifiera servertypen.

DBCOLUMNFLAGS_SS_ISVARIABLESCALE är endast giltig när den är ansluten till en server som kör SQL Server 2008 (10.0.x) och senare versioner. DBCOLUMNFLAGS_SS_ISVARIABLESCALE är odefinierat när det är anslutet till servrar på nednivå.

IColumnsInfo::GetColumnInfo

DBCOLUMNINFO-strukturen returnerar följande information:

Parametertyp wType ulColumnSize bPrecision bScale dwFlags

DBPARAMFLAGS_SS_ISVARIABLESCALE
datum DBTYPE_DBDATE 6 10 0 Klar
time(1..7) DBTYPE_DBTIME2 10 8, 10..16 0..7 Ställa
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Klar
datetime DBTYPE_DBTIMESTAMP 16 23 3 Klar
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Ställa
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Ställa

I dwFlagsär DBCOLUMNFLAGS_ISFIXEDLENGTH alltid sant för datum/tid-typer och följande flaggor är alltid falska:

  • DBCOLUMNFLAGS_CACHEDEFERRED

  • DBCOLUMNFLAGS_ISBOOKMARK

  • DBCOLUMNFLAGS_ISCHAPTER

  • DBCOLUMNFLAGS_ISLONG

  • DBCOLUMNFLAGS_ISROWID

  • DBCOLUMNFLAGS_ISROWVER, MAYDEFER

Återstående flaggor (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE och DBCOLUMNFLAGS_WRITEUNKNOWN) kan anges.

En ny flagga DBCOLUMNFLAGS_SS_ISVARIABLESCALE finns i dwFlags så att ett program kan fastställa servertypen för kolumner, där wType är DBTYPE_DBTIMESTAMP. bScale måste också användas för att identifiera servertypen.

Se även

stöd för datatyp för förbättringar av OLE DB-datum och tid