Création d’ensembles de lignes de paramètres table dans SQL Server Native Client
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. Pour cette raison, le fournisseur OLE DB SQL Server Native Client permet aux consommateurs de créer un objet d’ensemble de lignes spécialisé sur 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 requis 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 de l’objet d’ensemble de lignes de paramètres table sont en lecture seule. Le consommateur n’est donc pas censé définir des propriétés 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 des informations sur l’état null, unique, calculé et de mise à jour de chaque colonne, le consommateur utilise 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. Cela est similaire à la façon dont les colonnes sont spécifiées lorsqu’une table est créée dans SQL Server. Le consommateur obtient un objet d’ensemble de lignes de paramètres table à partir du fournisseur OLE DB SQL Server Native Client via le paramètre de sortie ppRowset .
Scénario Dynamique
Lorsque le consommateur n’a pas d’informations de type, il doit utiliser IOpenRowset ::OpenRowset pour instancier des objets d’ensemble de lignes de paramètres 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 fournisseur OLE DB SQL Server Native Client obtient ensuite les informations de type (informations de colonne et contraintes) du serveur, puis retourne un objet d’ensemble de lignes de paramètres table via le paramètre ppRowset . Cette opération requiert 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)