Share via


Conditions associées aux curseurs pilotés par jeu de clés pour les fournisseurs OLE DB

Les curseurs Transact-SQL pilotés par jeu de clés peuvent faire référence aux tables distantes uniquement si les conditions suivantes sont remplies :

  • La requête distribuée doit respecter les exigences liées aux instructions SELECT utilisées dans une instruction DECLARE CURSOR qui déclare le curseur piloté par jeu de clés. Pour plus d'informations sur les conditions Transact-SQL liées à la prise en charge des curseurs pilotés par jeu de clés, consultez DECLARE CURSOR (Transact-SQL).

  • Toutes les tables locales de la requête doivent avoir un index unique. L'index de la table distante doit être présenté par l'intermédiaire de l'ensemble de lignes INDEXES de l'interface IDBSchemaRowset.

Conditions associées aux index pour les fournisseurs OLE DB

SQL Server peut employer des index sur des tables à partir d'un fournisseur OLE DB pour évaluer certaines requêtes. Pour que SQL Server utilise un index, le fournisseur doit présenter des interfaces OLE DB qui permettent l'analyse d'un ensemble de lignes d'index, la recherche d'un ensemble de lignes d'index à l'aide des valeurs des colonnes d'index et la définition de la position de la ligne dans l'ensemble de lignes de la table de base à l'aide de signets obtenus à partir de l'ensemble de lignes d'index.

L'utilisation des index du fournisseur OLE DB n'offre des avantages liés aux performances que lorsque les ensembles de lignes d'index et de table se trouvent sur le même ordinateur que l'instance de SQL Server. Par conséquent, l'option Index AS Access Path ne doit être définie que si la source de données se trouve sur le même ordinateur que SQL Server.

SQL Server peut utiliser les index d'un fournisseur OLE DB uniquement si les conditions suivantes sont satisfaites :

  • Le fournisseur doit prendre en charge l'interface IDBSchemaRowset avec les ensembles de lignes de schémas TABLES, COLUMNS et INDEXES.

  • Le fournisseur doit prend en charge l'ouverture d'un ensemble de lignes sur un index au moyen de IOpenRowset en spécifiant le nom d'index et le nom de la table de base correspondante.

  • L'objet Index doit mettre en œuvre toutes ses interfaces obligatoires : IRowset, IRowsetIndex, IAccessor, IColumnsInfo, IRowsetInfo et IConvertTypes.

  • Les ensembles de lignes ouverts vis-à-vis d'une table de base indexée, à l'aide de IOpenRowset, doivent prendre en charge l'interface IRowsetLocate pour se positionner sur une ligne de la table de base tirée d'un signet obtenu à partir de l'ensemble de lignes de l'index.

Si le fournisseur OLE DB répond à ces exigences, l'administrateur SQL Server peut définir l'option de fournisseur Index As Access Path pour permettre à SQL Server d'utiliser les index du fournisseur pour évaluer les requêtes. Par défaut, SQL Server ne tente pas d'employer les index du fournisseur tant que cette option n'est pas définie.

Éléments requis pour la mise à jour des curseurs pilotés par jeu de clés

Une table distante peut être mise à jour ou supprimée au moyen d'un curseur piloté par jeu de clés défini sur une requête distribuée. Par exemple : UPDATE | DELETE remote_table WHERE CURRENT OF cursor_name.

Voici les conditions dans lesquelles les curseurs pouvant être mis à jour sur des requêtes distribuées sont autorisés :

  • Le fournisseur doit satisfaire les conditions de mise à jour et de suppression sur la table distante. Pour plus d'informations, consultez Conditions associées aux instructions UPDATE et DELETE pour les fournisseurs OLE DB.

  • Toutes les opérations de curseur doivent avoir lieu dans une transaction utilisateur explicite, ou une transaction à plusieurs instructions, avec un niveau d'isolement de lecture renouvelable ou sérialisable.

Le fournisseur doit prendre en charge les transactions distribuées avec l'interface ITransactionJoin.