Metadata – parameter och raduppsättning
gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)
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.