Condividi tramite


Metadati per parametri e set di righe

In questo argomento vengono fornite informazioni sul tipo e sui membri di tipo seguenti, relativi alle funzionalità avanzate di data e ora OLE DB per SQL Server 2008.

  • Struttura DBBINDING

  • ICommandWithParameters::GetParameterInfo

  • ICommandWithParameters::SetParameterInfo

  • IColumnsRowset::GetColumnsRowset

  • IColumnsInfo::GetColumnInfo

ICommandWithParameters::GetParameterInfo

Le informazioni seguenti vengono restituite nella struttura DBPARAMINFO tramite prgParamInfo:

Tipo di parametro

wType

ulParamSize

bPrecision

bScale

dwFlags

DBPARAMFLAGS_SS_ISVARIABLESCALE

date

DBTYPE_DBDATE

6

10

0

Cancellato

time

DBTYPE_DBTIME2

10

8, 10..16

0..7

Impostato

smalldatetime

DBTYPE_DBTIMESTAMP

16

16

0

Cancellato

datetime

DBTYPE_DBTIMESTAMP

16

23

3

Cancellato

datetime2

DBTYPE_DBTIMESTAMP

16

19,21..27

0..7

Impostato

datetimeoffset

DBTYPE_DBTIMESTAMPOFFSET

20

26,28..34

0..7

Impostato

Tenere presente che in alcuni casi gli intervalli di valori non sono continui a causa dell'aggiunta di un separatore decimale quando la precisione frazionaria è maggiore di zero.

DBPARAMFLAGS_SS_ISVARIABLESCALE è valido solo se si è connessi a un server SQL Server 2008. 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

date

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'utilizzo di tipi di flusso TDS (Tabular-Data Stream) legacy utilizzando i nomi di tipo specifici del provider "datetime" e "smalldatetime". Se si è connessi a server SQL Server 2008 o versione successiva, viene utilizzato il formato "datetime2" e si verifica una conversione server implicita, se necessaria, se il nome di tipo è "datetime2" o "DBTYPE_DBTIMESTAMP". bScale viene ignorato se vengono utilizzati i nomi di tipo 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 SQL Server Native Client aggiornato da SQL Server 2005 che utilizzano "DBTYPE_DBTIMESTAMP" si verificherà un errore se bScale non viene impostato correttamente. In caso di connessione a istanze server precedenti a SQL Server 2008, un valore di bScale diverso da 0 o 3 con "DBTYPE_DBTIMESTAMP" rappresenta un errore che comporta la restituzione di E_FAIL.

Quando non viene chiamato ICommandWithParameters::SetParameterInfo, il provider ricava il tipo di server dal tipo di associazione specificato in IAccessor::CreateAccessor nel modo seguente:

Tipo di associazione

pwszDataSourceType

(specifico del provider)

DBTYPE_DATE

datetime2(0)

DBTYPE_DBDATE

date

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

date

DBTYPE_DBDATE

6

10

0

Cancellato

time

DBTYPE_DBTIME2

10

8, 10..16

0..7

Impostato

smalldatetime

DBTYPE_DBTIMESTAMP

16

16

0

Cancellato

datetime

DBTYPE_DBTIMESTAMP

16

23

3

Cancellato

datetime2

DBTYPE_DBTIMESTAMP

16

19, 21..27

0..7

Impostato

datetimeoffset

DBTYPE_DBTIMESTAMPOFFSET

20

26, 28..34

0..7

Impostato

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 SQL Server 2008. 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

date

DBTYPE_DBDATE

6

10

0

Cancellato

time(1..7)

DBTYPE_DBTIME2

10

8, 10..16

0..7

Impostato

smalldatetime

DBTYPE_DBTIMESTAMP

16

16

0

Cancellato

datetime

DBTYPE_DBTIMESTAMP

16

23

3

Cancellato

datetime2

DBTYPE_DBTIMESTAMP

16

19, 21..27

0..7

Impostato

datetimeoffset

DBTYPE_DBTIMESTAMPOFFSET

20

26, 28..34

0..7

Impostato

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 è disponibile un nuovo flag DBCOLUMNFLAGS_SS_ISVARIABLESCALE che consente di determinare il tipo di server delle colonne nelle applicazioni, dove wType è DBTYPE_DBTIMESTAMP. Per identificare il tipo di server è necessario utilizzare anche bScale.

Vedere anche

Concetti