Share via


Metadati - Parametro e set di righe

Si applica a: SQL Server Azure SQL DatabaseIstanza gestita di SQL di Azure Azure SynapseAnalytics AnalyticsPlatform System (PDW)

Scaricare il driver OLE DB

Questo articolo contiene informazioni sul tipo e sui membri di tipo seguenti, in relazione ai miglioramenti apportati alle funzionalità di data e ora OLE DB.

  • Struttura DBBINDING

  • ICommandWithParameters::GetParameterInfo

  • ICommandWithParameters::SetParameterInfo

  • IColumnsRowset::GetColumnsRowset

  • IColumnsInfo::GetColumnInfo

ICommandWithParameters::GetParameterInfo

Le informazioni seguenti vengono restituite nella struttura DBPARAMINFO attraverso prgParamInfo:

Tipo di parametro wType ulParamSize bPrecision bScale dwFlags

DBPARAMFLAGS_SS_ISVARIABLESCALE
Data DBTYPE_DBDATE 6 10 0 Clear
time DBTYPE_DBTIME2 10 8, 10..16 0..7 Configurazione
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Clear
Datetime DBTYPE_DBTIMESTAMP 16 23 3 Clear
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Configurazione
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Configurazione

Tenere presente che in alcuni casi gli intervalli di valori non sono continui Ciò è dovuto all'aggiunta di un separatore decimale quando la precisione frazionaria è maggiore di zero.

DBPARAMFLAGS_SS_ISVARIABLESCALE è valido solo quando si è connessi a un server che esegue SQL Server 2008 (10.0.x) e versioni successive. DBPARAMFLAGS_SS_ISVARIABLESCALE non viene mai impostato quando si è connessi a server legacy.

ICommandWithParameters::SetParameterInfo e tipi di parametri impliciti

Le informazioni specificate nella struttura DBPARAMBINDINFO devono essere conformi agli elementi seguenti:

pwszDataSourceType

(specifico del provider)
pwszDataSourceType

(generico di OLE DB)
ulParamSize bScale
DBTYPE_DATE 6 Ignorato
Data DBTYPE_DBDATE 6 Ignorato
DBTYPE_DBTIME 10 Ignorato
time DBTYPE_DBTIME2 10 0..7
smalldatetime 16 Ignorato
Datetime 16 Ignorato
datetime2 o DBTYPE_DBTIMESTAMP DBTYPE_DBTIMESTAMP 16 0..7
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 0..7

Il parametro bPrecision viene ignorato.

"DBPARAMFLAGS_SS_ISVARIABLESCALE" viene ignorato in caso di invio di dati al server. Le applicazioni possono forzare l'uso di tipi di flusso TDS (Tabular-Data Stream) legacy usando i nomi di tipo specifici del provider "datetime" e "smalldatetime". Quando si è connessi ai server che eseguono SQL Server 2008 (10.0.x) e versioni successive, il formato "datetime2" verrà usato e verrà eseguita una conversione implicita del server, se necessario, quando il nome del tipo è "datetime2" o "DBTYPE_DBTIMESTAMP". bScale viene ignorato se vengono usati i nomi dei tipi specifici del provider "datetime" o "smalldatetime". In caso contrario, è necessario verificare che bScale sia impostato correttamente nelle applicazioni. Nelle applicazioni aggiornate da MDAC e in OLE DB Driver per SQL Server aggiornato da SQL Server 2005 (9.x) che usano "DBTYPE_DBTIMESTAMP" si verificherà un errore se bScale non viene impostato correttamente. Quando si è connessi a istanze del server precedenti a SQL Server 2008 (10.0.x), un valore bScale diverso da 0 o 3 con "DBTYPE_DBTIMESTAMP" è un errore e E_FAIL verrà restituito.

Quando ICommandWithParameters::SetParameterInfo non viene chiamato, il provider implica il tipo di server dal tipo di associazione come specificato in IAccessor::CreateAccessor come indicato di seguito:

Tipo di associazione pwszDataSourceType

(specifico del provider)
DBTYPE_DATE datetime2(0)
DBTYPE_DBDATE Data
DBTYPE_DBTIME time(0)
DBTYPE_DBTIME2 time(7)
DBTYPE_DBTIMESTAMP datetime2(7)
DBTYPE_DBTIMESTAMPOFFSET datetimeoffset(7)

IColumnsRowset::GetColumnsRowset

IColumnsRowset::GetColumnsRowset restituisce le colonne seguenti:

Tipo di colonna DBCOLUMN_TYPE DBCOLUM_COLUMNSIZE DBCOLUMN_PRECISION DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION DBCOLUMN_FLAGS, DBCOLUMNFLAGS_SS_ISVARIABLESCALE
Data DBTYPE_DBDATE 6 10 0 Clear
time DBTYPE_DBTIME2 10 8, 10..16 0..7 Configurazione
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Clear
Datetime DBTYPE_DBTIMESTAMP 16 23 3 Clear
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Configurazione
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Configurazione

In DBCOLUMN_FLAGS il valore di DBCOLUMNFLAGS_ISFIXEDLENGTH è sempre true per i tipi date/time e il valore dei flag seguenti è sempre false:

  • DBCOLUMNFLAGS_CACHEDEFERRED

  • DBCOLUMNFLAGS_ISBOOKMARK

  • DBCOLUMNFLAGS_ISCHAPTER

  • DBCOLUMNFLAGS_ISLONG

  • DBCOLUMNFLAGS_ISROWID

  • DBCOLUMNFLAGS_ISROWVER

  • DBCOLUMNFLAGS_MAYDEFER

I flag restanti (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE e DBCOLUMNFLAGS_WRITEUNKNOWN) possono essere impostati in base alla modalità di definizione della colonna e alla query effettiva.

In DBCOLUMN_FLAGS è disponibile un nuovo flag DBCOLUMNFLAGS_SS_ISVARIABLESCALE che consente di determinare il tipo di server delle colonne nelle applicazioni, dove DBCOLUMN_TYPE è DBTYPE_DBTIMESTAMP. Per identificare il tipo di server è necessario utilizzare anche DBCOLUMN_SCALE o DBCOLUMN_DATETIMEPRECISION.

DBCOLUMNFLAGS_SS_ISVARIABLESCALE è valido solo quando si è connessi a un server che esegue SQL Server 2008 (10.0.x) e versioni successive. DBCOLUMNFLAGS_SS_ISVARIABLESCALE non è definito quando si è connessi a server legacy.

IColumnsInfo::GetColumnInfo

La struttura DBCOLUMNINFO restituisce le informazioni seguenti:

Tipo di parametro wType ulColumnSize bPrecision bScale dwFlags

DBPARAMFLAGS_SS_ISVARIABLESCALE
Data DBTYPE_DBDATE 6 10 0 Clear
time(1..7) DBTYPE_DBTIME2 10 8, 10..16 0..7 Configurazione
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Clear
Datetime DBTYPE_DBTIMESTAMP 16 23 3 Clear
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Configurazione
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Configurazione

In dwFlags il valore di DBCOLUMNFLAGS_ISFIXEDLENGTH è sempre true per i tipi date/time e il valore dei flag seguenti è sempre false:

  • DBCOLUMNFLAGS_CACHEDEFERRED

  • DBCOLUMNFLAGS_ISBOOKMARK

  • DBCOLUMNFLAGS_ISCHAPTER

  • DBCOLUMNFLAGS_ISLONG

  • DBCOLUMNFLAGS_ISROWID

  • DBCOLUMNFLAGS_ISROWVER, MAYDEFER

I flag restanti (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE e DBCOLUMNFLAGS_WRITEUNKNOWN) possono essere impostati.

In dwFlags viene specificato un nuovo flag DBCOLUMNFLAGS_SS_ISVARIABLESCALE per consentire a un'applicazione di determinare il tipo di server delle colonne in cui wType è DBTYPE_DBTIMESTAMP. Per identificare il tipo di server usare anche bScale.

Vedere anche

Supporto dei tipi di dati per i miglioramenti relativi a data e ora OLE DB