Partilhar via


Metadados - Parâmetro e conjunto de linhas

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada SQL do Azure do Azure Synapse AnalyticsAnalytics Platform System (PDW)

Baixar driver OLE DB

Este artigo fornece informações sobre os seguintes tipos e membros de tipo, relacionados aos aprimoramentos de data e hora do OLE DB.

  • Estrutura DBBINDING

  • ICommandWithParameters::GetParameterInfo

  • ICommandWithParameters::SetParameterInfo

  • IColumnsRowset::GetColumnsRowset

  • IColumnsInfo::GetColumnInfo

ICommandWithParameters::GetParameterInfo

As seguintes informações são retornadas na estrutura DBPARAMINFO através prgParamInfo:

Tipo de parâmetro wType ulParamSize bPrecision bScale dwFlags

DBPARAMFLAGS_SS_ISVARIABLESCALE
data DBTYPE_DBDATE 6 10 0 Limpar
Hora DBTYPE_DBTIME2 10 8, 10..16 0..7 Conjunto
PequenoDateTime DBTYPE_DBTIMESTAMP 16 16 0 Limpar
datetime DBTYPE_DBTIMESTAMP 16 23 3 Limpar
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Conjunto
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Conjunto

Observe que, em alguns casos, os intervalos de valores não são contínuos. Isto deve-se à adição de um ponto decimal quando a precisão fracionada é superior a zero.

DBPARAMFLAGS_SS_ISVARIABLESCALE só é válido quando conectado a um servidor que executa o SQL Server 2008 (10.0.x) e versões posteriores. DBPARAMFLAGS_SS_ISVARIABLESCALE nunca é definido quando conectado a servidores de nível inferior.

ICommandWithParameters::SetParameterInfo e tipos de parâmetros implícitos

As informações fornecidas na estrutura DBPARAMBINDINFO devem estar em conformidade com o seguinte:

pwszDataSourceType

(específico do prestador)
pwszDataSourceType

(OLE DB genérico)
ulParamSize bScale
DBTYPE_DATE 6 Ignorado
data DBTYPE_DBDATE 6 Ignorado
DBTYPE_DBTIME 10 Ignorado
Hora DBTYPE_DBTIME2 10 0..7
PequenoDateTime 16 Ignorado
datetime 16 Ignorado
datetime2 ou DBTYPE_DBTIMESTAMP DBTYPE_DBTIMESTAMP 16 0..7
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 0..7

O parâmetro bPrecision é ignorado.

"DBPARAMFLAGS_SS_ISVARIABLESCALE" é ignorado ao enviar dados para o servidor. Os aplicativos podem forçar o uso de tipos de fluxo de dados tabulares (TDS) herdados usando os nomes de tipo específicos do provedor "datetime" e "smalldatetime". Quando conectado a servidores que executam o SQL Server 2008 (10.0.x) e versões posteriores, o formato "datetime2" será usado e uma conversão implícita do servidor ocorrerá, se necessário, quando o nome do tipo for "datetime2" ou "DBTYPE_DBTIMESTAMP". bScale será ignorado se os nomes de tipo específicos do provedor "datetime" ou "smalldatetime" forem usados. Caso contrário, os aplicativos devem garantir que bScale esteja definido corretamente. Os aplicativos atualizados do MDAC e do driver OLE DB para SQL Server do SQL Server 2005 (9.x) que usam "DBTYPE_DBTIMESTAMP" falharão se não definirem bScale corretamente. Quando conectado a instâncias de servidor anteriores ao SQL Server 2008 (10.0.x), um valor bScale diferente de 0 ou 3 com "DBTYPE_DBTIMESTAMP" é um erro e E_FAIL será retornado.

Quando ICommandWithParameters::SetParameterInfo não é chamado, o provedor implica o tipo de servidor do tipo de ligação, conforme especificado em IAccessor::CreateAccessor da seguinte maneira:

Tipo de vinculação pwszDataSourceType

(específico do prestador)
DBTYPE_DATE datetime2(0)
DBTYPE_DBDATE data
DBTYPE_DBTIME tempo(0)
DBTYPE_DBTIME2 tempo(7)
DBTYPE_DBTIMESTAMP datetime2(7)
DBTYPE_DBTIMESTAMPOFFSET datetimeoffset(7)

IColumnsRowset::GetColumnsRowset

IColumnsRowset::GetColumnsRowset retorna as seguintes colunas:

Tipo de coluna DBCOLUMN_TYPE DBCOLUMN_COLUMNSIZE DBCOLUMN_PRECISION DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION DBCOLUMN_FLAGS, DBCOLUMNFLAGS_SS_ISVARIABLESCALE
data DBTYPE_DBDATE 6 10 0 Limpar
Hora DBTYPE_DBTIME2 10 8, 10..16 0..7 Conjunto
PequenoDateTime DBTYPE_DBTIMESTAMP 16 16 0 Limpar
datetime DBTYPE_DBTIMESTAMP 16 23 3 Limpar
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Conjunto
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Conjunto

No DBCOLUMN_FLAGS, DBCOLUMNFLAGS_ISFIXEDLENGTH é sempre verdadeiro para tipos de data/hora e os seguintes sinalizadores são sempre falsos:

  • DBCOLUMNFLAGS_CACHEDEFERRED

  • DBCOLUMNFLAGS_ISBOOKMARK

  • DBCOLUMNFLAGS_ISCHAPTER

  • DBCOLUMNFLAGS_ISLONG

  • DBCOLUMNFLAGS_ISROWID

  • DBCOLUMNFLAGS_ISROWVER

  • DBCOLUMNFLAGS_MAYDEFER

Os sinalizadores restantes (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE e DBCOLUMNFLAGS_WRITEUNKNOWN) podem ser definidos, dependendo de como a coluna é definida e da consulta real.

Um novo sinalizador DBCOLUMNFLAGS_SS_ISVARIABLESCALE é fornecido em DBCOLUMN_FLAGS para permitir que um aplicativo determine o tipo de servidor de colunas, onde DBCOLUMN_TYPE é DBTYPE_DBTIMESTAMP. DBCOLUMN_SCALE ou DBCOLUMN_DATETIMEPRECISION também devem ser usados para identificar o tipo de servidor.

DBCOLUMNFLAGS_SS_ISVARIABLESCALE só é válido quando conectado a um servidor que executa o SQL Server 2008 (10.0.x) e versões posteriores. DBCOLUMNFLAGS_SS_ISVARIABLESCALE é indefinido quando conectado a servidores de nível inferior.

IColumnsInfo::GetColumnInfo

A estrutura DBCOLUMNINFO retorna as seguintes informações:

Tipo de parâmetro wType ulColumnSize bPrecision bScale dwFlags

DBPARAMFLAGS_SS_ISVARIABLESCALE
data DBTYPE_DBDATE 6 10 0 Limpar
tempo(1..7) DBTYPE_DBTIME2 10 8, 10..16 0..7 Conjunto
PequenoDateTime DBTYPE_DBTIMESTAMP 16 16 0 Limpar
datetime DBTYPE_DBTIMESTAMP 16 23 3 Limpar
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Conjunto
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Conjunto

Em dwFlags, DBCOLUMNFLAGS_ISFIXEDLENGTH é sempre verdadeiro para tipos de data/hora e os seguintes sinalizadores são sempre falsos:

  • DBCOLUMNFLAGS_CACHEDEFERRED

  • DBCOLUMNFLAGS_ISBOOKMARK

  • DBCOLUMNFLAGS_ISCHAPTER

  • DBCOLUMNFLAGS_ISLONG

  • DBCOLUMNFLAGS_ISROWID

  • DBCOLUMNFLAGS_ISROWVER, MAYDEFER

Os sinalizadores restantes (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE e DBCOLUMNFLAGS_WRITEUNKNOWN) podem ser definidos.

Um novo DBCOLUMNFLAGS_SS_ISVARIABLESCALE de sinalizador é fornecido em dwFlags para permitir que um aplicativo determine o tipo de servidor de colunas, onde wType é DBTYPE_DBTIMESTAMP. bScale também deve ser usado para identificar o tipo de servidor.

Ver também

Suporte de tipo de dados para melhorias de data e hora do OLE DB