Partager via


Métadonnées - Paramètre et ensemble de lignes dans SQL Server Native Client

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Cette rubrique fournit des informations sur le type et les membres de type suivants en rapport avec les améliorations de date et d'heure OLE DB.

  • Structure DBBINDING

  • ICommandWithParameters::GetParameterInfo

  • ICommandWithParameters::SetParameterInfo

  • IColumnsRowset::GetColumnsRowset

  • IColumnsInfo::GetColumnInfo

ICommandWithParameters::GetParameterInfo

Les informations suivantes sont retournées dans la structure DBPARAMINFO via prgParamInfo :

Type de paramètre wType ulParamSize bPrecision bScale dwFlags

DBPARAMFLAGS_SS_ISVARIABLESCALE
Date DBTYPE_DBDATE 6 10 0 Désactiver
time DBTYPE_DBTIME2 10 8, 10..16 0..7 Définissez
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Désactiver
DATETIME DBTYPE_DBTIMESTAMP 16 23 3 Désactiver
datetime2 DBTYPE_DBTIMESTAMP 16 19,21..27 0..7 Définissez
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26,28..34 0..7 Définissez

Notez que, dans certains cas, les plages de valeurs ne sont pas continues. Cela est dû à l'ajout d'une virgule décimale lorsque la précision fractionnaire est supérieure à zéro.

DBPARAMFLAGS_SS_ISVARIABLESCALE est valide uniquement lorsqu’il est connecté à un serveur SQL Server 2008 (10.0.x) (ou version ultérieure). DBPARAMFLAGS_SS_ISVARIABLESCALE n’est jamais défini en cas de connexion à des serveurs de bas niveau.

ICommandWithParameters::SetParameterInfo et types de paramètre implicites

Les informations fournies dans la structure DBPARAMBINDINFO doivent respecter les conditions suivantes :

pwszDataSourceType

(spécifique au fournisseur)
pwszDataSourceType

(OLE DB générique)
ulParamSize bScale
DBTYPE_DATE 6 Ignoré
Date DBTYPE_DBDATE 6 Ignoré
DBTYPE_DBTIME 10 Ignoré
time DBTYPE_DBTIME2 10 0..7
smalldatetime 16 Ignoré
DATETIME 16 Ignoré
datetime2 ou DBTYPE_DBTIMESTAMP DBTYPE_DBTIMESTAMP 16 0..7
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 0..7

Le paramètre bPrecision est ignoré.

« DBPARAMFLAGS_SS_ISVARIABLESCALE » est ignoré lors de l'envoi de données au serveur. Les applications peuvent forcer l’utilisation de types TDS (Tabular Data Stream) hérités en utilisant les noms de types spécifiques au fournisseur « datetime » et « smalldatetime ». Lorsque vous êtes connecté à des serveurs SQL Server 2008 (10.0.x) (ou version ultérieure), le format « datetime2 » est utilisé et une conversion implicite de serveur se produit, si nécessaire, lorsque le nom de type est « datetime2 » ou « DBTYPE_DBTIMESTAMP ». bScale est ignoré si les noms de types spécifiques au fournisseur « DateTime » ou « smalldatetime » sont utilisés. Sinon, les appications doivent s’assurer que bScale est correctement défini. Les applications mises à niveau à partir de MDAC et SQL Server Native Client à partir de SQL Server 2005 (9.x) qui utilisent « DBTYPE_DBTIMESTAMP » échouent si elles ne définissent pas bScale correctement. En cas de connexion à des instances de serveur antérieures à SQL Server 2008 (10.0.x), une valeur bScale autre que 0 ou 3 avec « DBTYPE_DBTIMESTAMP » est une erreur, et E_FAIL est retourné.

Lorsque ICommandWithParameters ::SetParameterInfo n’est pas appelé, le fournisseur impule le type de serveur à partir du type de liaison spécifié dans IAccessor ::CreateAccessor comme suit :

Type de liaison pwszDataSourceType

(spécifique au fournisseur)
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 retourne les colonnes suivantes :

Type de colonne DBCOLUMN_TYPE DBCOLUM_COLUMNSIZE DBCOLUMN_PRECISION DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION DBCOLUMN_FLAGS, DBCOLUMNFLAGS_SS_ISVARIABLESCALE
Date DBTYPE_DBDATE 6 10 0 Désactiver
time DBTYPE_DBTIME2 10 8, 10..16 0..7 Définissez
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Désactiver
DATETIME DBTYPE_DBTIMESTAMP 16 23 3 Désactiver
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Définissez
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Définissez

Dans DBCOLUMN_FLAGS, DBCOLUMNFLAGS_ISFIXEDLENGTH a toujours la valeur True pour les types date/heure et les indicateurs suivants sont toujours False :

  • DBCOLUMNFLAGS_CACHEDEFERRED

  • DBCOLUMNFLAGS_ISBOOKMARK

  • DBCOLUMNFLAGS_ISCHAPTER

  • DBCOLUMNFLAGS_ISLONG

  • DBCOLUMNFLAGS_ISROWID

  • DBCOLUMNFLAGS_ISROWVER

  • DBCOLUMNFLAGS_MAYDEFER

Les indicateurs restants (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE et DBCOLUMNFLAGS_WRITEUNKNOWN) peuvent être définis, en fonction de la manière dont la colonne est définie et de la requête réelle.

Un nouvel indicateur DBCOLUMNFLAGS_SS_ISVARIABLESCALE est fourni dans DBCOLUMN_FLAGS pour permettre à une application de déterminer le type de serveur de colonnes, où DBCOLUMN_TYPE représente DBTYPE_DBTIMESTAMP. DBCOLUMN_SCALE ou DBCOLUMN_DATETIMEPRECISION doit également être utilisé pour identifier le type de serveur.

DBCOLUMNFLAGS_SS_ISVARIABLESCALE est valide uniquement lorsqu’il est connecté à un serveur SQL Server 2008 (10.0.x) (ou version ultérieure). DBCOLUMNFLAGS_SS_ISVARIABLESCALE est non défini en cas de connexion à des serveurs de bas niveau.

IColumnsInfo::GetColumnInfo

La structure DBCOLUMNINFO retourne les informations suivantes :

Type de paramètre wType ulColumnSize bPrecision bScale dwFlags

DBPARAMFLAGS_SS_ISVARIABLESCALE
Date DBTYPE_DBDATE 6 10 0 Désactiver
time(1..7) DBTYPE_DBTIME2 10 8, 10..16 0..7 Définissez
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Désactiver
DATETIME DBTYPE_DBTIMESTAMP 16 23 3 Désactiver
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Définissez
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Définissez

Dans dwFlags, DBCOLUMNFLAGS_ISFIXEDLENGTH a toujours la valeur True pour les types date/heure et les indicateurs suivants sont toujours False :

  • DBCOLUMNFLAGS_CACHEDEFERRED

  • DBCOLUMNFLAGS_ISBOOKMARK

  • DBCOLUMNFLAGS_ISCHAPTER

  • DBCOLUMNFLAGS_ISLONG

  • DBCOLUMNFLAGS_ISROWID

  • DBCOLUMNFLAGS_ISROWVER, MAYDEFER

Les indicateurs restants (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE et DBCOLUMNFLAGS_WRITEUNKNOWN) peuvent être définis.

Un nouvel indicateur, DBCOLUMNFLAGS_SS_ISVARIABLESCALE, est fourni dans dwFlags pour permettre à une application de déterminer le type de serveur des colonnes, où wType est DBTYPE_DBTIMESTAMP. bScale doit aussi être utilisé pour identifier le type de serveur.

Voir aussi

Métadonnées (OLE DB)