Metadata – Parameter och raduppsättning i SQL Server Native Client
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Det här avsnittet 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 SQL Server 2008-server (10.0.x) (eller senare). 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 SQL Server 2008-servrar (10.0.x) (eller senare) 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 uppgraderas från MDAC och SQL Server Native Client 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 | DBCOLUM_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 SQL Server 2008-server (10.0.x) (eller senare). 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.