Création d'un ensemble de lignes de paramètre table
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Bien que les consommateurs puissent fournir n'importe quel objet d'ensemble de lignes pour les paramètres table, les objets d'ensemble de lignes communs sont implémentés dans des banques de données principales, ce qui limite leurs performances. C’est pourquoi le pilote OLE DB pour SQL Server permet aux consommateurs de créer un objet d’ensemble de lignes spécialisé par-dessus les données en mémoire. Cet objet d'ensemble de lignes spécial stocké en mémoire est un nouvel objet COM appelé un ensemble de lignes de paramètre table. Il fournit des fonctionnalités similaires aux jeux de paramètres.
Les objets d'ensemble de lignes de paramètre table sont créés explicitement par le consommateur pour les paramètres d'entrée via plusieurs interfaces de niveau session. Il existe une instance d’un objet d’ensemble de lignes de paramètre table par paramètre table. Le consommateur peut créer les objets d'ensemble de lignes de paramètre table soit en fournissant des informations de métadonnées qui sont déjà connues (scénario statique), soit en révélant ces informations par le biais des interfaces du fournisseur (scénario dynamique). Les sections qui suivent décrivent ces deux scénarios :
Scénario statique
Lorsque les informations de type sont connues, le consommateur utilise ITableDefinitionWithConstraints::CreateTableWithConstraints pour instancier un objet d'ensemble de lignes de paramètre table qui correspond à un paramètre table.
Le champ guid (paramètre pTableID) contient le GUID spécial (CLSID_ROWSET_TVP). Le membre pwszName contient le nom du type de paramètre table que le consommateur souhaite instancier. Le champ eKind sera défini sur DBKIND_GUID_NAME. Ce nom est nécessaire lorsque l’instruction est une instruction SQL ad hoc. Le nom est facultatif s’il s’agit d’un appel de procédure.
Pour l'agrégation, le consommateur passe le paramètre pUnkOuter avec l'IUnknown de contrôle.
Les propriétés des objets d’ensemble de lignes de paramètre table sont en lecture seule. Le consommateur n’est donc pas supposé définir une quelconque propriété dans rgPropertySets.
Pour le membre rgPropertySets de chaque structure DBCOLUMNDESC, le consommateur peut spécifier des propriétés supplémentaires pour chaque colonne. Ces propriétés appartiennent au jeu de propriétés DBPROPSET_SQLSERVERCOLUMN. Elles vous permettent de spécifier les paramètres calculés et les paramètres par défaut de chaque colonne. Elles prennent également en charge les propriétés de colonnes existantes, telles que la possibilité de valeur Null et l'identité.
Pour récupérer les informations correspondantes d’un objet d’ensemble de lignes de paramètre table, le consommateur utilise IRowsetInfo::GetProperties.
Pour récupérer les informations sur l’état null, unique, calculé et mis à jour de chaque colonne, le consommateur peut utiliser IColumnsRowset::GetColumnsRowset ou IColumnsInfo::GetColumnInfo. Ces méthodes fournissent des informations détaillées sur chaque colonne de l'ensemble de lignes du paramètre table.
Le consommateur spécifie le type de chaque colonne du paramètre table. Ceci est identique à la spécification de colonnes lors de la création d’une table dans SQL Server. Le consommateur obtient un objet d'ensemble de lignes de paramètre table du fournisseur OLE DB Driver pour SQL Server par le biais du paramètre de sortie ppRowset.
Scénario Dynamique
Lorsque le consommateur ne dispose pas des informations de type, il doit utiliser IOpenRowset::OpenRowset pour instancier des objets d'ensemble de lignes de paramètre table. Tout ce que le consommateur doit fournir au fournisseur est le nom du type.
Dans ce scénario, le fournisseur obtient les informations de type d'un objet d'ensemble de lignes de paramètre table à partir du serveur au nom du consommateur.
Les paramètres pTableID et pUnkOuter doivent être définis comme dans le scénario statique. Le pilote OLE DB pour SQL Server obtient ensuite les informations de type (informations et contraintes de colonne) du serveur et retourne un objet d’ensemble de lignes de paramètre table par le biais du paramètre ppRowset. Cette opération nécessite une communication avec le serveur, et par conséquent, ne fonctionne pas aussi bien que le scénario statique. Le scénario dynamique fonctionne uniquement avec des appels de procédure paramétrables.
Voir aussi
Paramètres table (OLE DB)
Utiliser des paramètres table (OLE DB)