Consignes pour l'utilisation des requêtes distribuées

Mis à jour : 17 juillet 2006

À partir du moment où le fournisseur prend en charge les interfaces OLE DB requises, chaque classe d'instruction Transact-SQL mentionnée dans cette rubrique est autorisée.

Instructions Transact-SQL

Voici la liste des sous-ensembles de langage Transact-SQL qui sont autorisés sur les tables distantes accessibles par l'intermédiaire des noms de serveurs liés ou des noms appropriés :

  • Toutes les requêtes qui ont la forme standard de la clause SELECT select_list FROM clause WHERE sont autorisées. La clause INTO new_table_name de SELECT n'est pas autorisée lorsque new_table_name fait référence à une table distante.
  • Dans les instructions SELECT, INSERT, UPDATE et DELETE, les colonnes des tables distantes ne peuvent pas être qualifiées avec un nom de table en une seule ou en quatre parties. Les tables distantes doivent posséder des alias dans la clause FROM et le nom d’alias doit être utilisé pour qualifier le nom de colonne.
  • Les tables ayant des colonnes xml ne peuvent pas être interrogées, même si la requête accède à des colonnes non xml de la table.
  • Lorsqu'une colonne d'objets de grande taille (LOB) issue d'une table distante est spécifiée en tant qu'élément dans le paramètre select_list d'une instruction SELECT, cette instruction ne peut pas contenir de clause ORDER BY.
  • Les prédicats IS NULL et IS NOT NULL ne peuvent pas faire référence à des colonnes LOB dans une table distante.
  • GROUP BY ALL n'est pas autorisé dans une requête distribuée lorsque la requête a également une clause WHERE. GROUP BY sans spécifier ALL est pris en charge.
  • Les instructions INSERT sont autorisées sur les tables distantes à partir du moment où le fournisseur respecte les exigences OLE DB applicables aux instructions INSERT. Pour plus d'informations, consultez Éléments requis pour l'instruction INSERT pour les fournisseurs OLE DB.
  • Les constantes NULL ne peuvent pas être insérées dans une colonne timestamp via une requête distribuée.
  • $IDENTITY et $ROWGUIDCOL ne sont pas pris en charge avec les requêtes distribuées. Des valeurs explicites ne peuvent pas être insérées dans des colonnes d'identité de tables distantes.
  • Les instructions UPDATE et DELETE sont autorisées sur les tables distantes si le fournisseur respecte les exigences de l'interface OLE DB applicables à la table spécifiée. Pour plus d'informations, consultez Conditions associées aux instructions UPDATE et DELETE pour les fournisseurs OLE DB.
  • Une table distante peut être mise à jour ou supprimée par l'intermédiaire d'un curseur défini sur une requête distribuée, lorsque la table distante concernée est spécifiée dans l'instruction UPDATE ou DELETE (UPDATE ou DELETE remote_table WHERE CURRENT OF cursor_name) si le fournisseur remplit les conditions nécessaires à une mise à jour de la table distante. Pour plus d'informations, consultez Utilisation de curseurs avec des requêtes distribuées.
  • Les instructions READTEXT, WRITETEXT et UPDATETEXT ne sont pas prises en charge sur les tables distantes.
  • Les colonnes contenant des types de données objets de grande taille (tels que text, ntext ou image) ne peuvent pas être référencées dans des opérations de mise à jour ou d'insertion si le fournisseur est instancié en dehors du processus SQL Server, l'option du fournisseur AllowInProcess est égale a 0. Pour plus d'informations, consultez Configuration des fournisseurs OLE DB pour l'exécution de requêtes distribuées.
  • Les instructions du langage de définition de données, telles que les instructions CREATE, ALTER ou DROP, ne sont pas autorisées sur les serveurs liés.
  • L'instruction EXECUTE, qui spécifie une commande de passage de données, est prise en charge sur les serveurs liés. Cette instruction permet d'exécuter des procédures stockées sur des fournisseurs autres que SQL Server.
  • Aucune autre opération ou instruction de niveau base de données n'est autorisée sur les serveurs liés.

Autres consignes

Restrictions et consignes supplémentaires :

  • Les curseurs STATIC et INSENSITIVE peuvent référencer des tables distantes. Les curseurs KEYSET peuvent faire référence à des tables distantes si le fournisseur OLE DB répond à certaines exigences. Pour plus d'informations sur ces exigences, consultez Conditions associées aux curseurs pilotés par jeu de clés pour les fournisseurs OLE DB. Aucun autre type de curseur ne peut faire référence à une table distante.
  • Les procédures stockées sont prises en charge uniquement sur les sources de données SQL Server.
  • Pour qu'une connexion puisse exécuter des requêtes distribuées, les options ANSI_NULLS et ANSI_WARNINGS de la connexion doivent être activées (ON). Pour plus d'informations, consultez SET ANSI_DEFAULTS (Transact-SQL).

Voir aussi

Concepts

Utilisation de transactions avec requêtes distribuées
Mappage des types de données à l'aide des requêtes distribuées
Requêtes distribuées

Autres ressources

SELECT (Transact-SQL)
EXECUTE (Transact-SQL)

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

17 juillet 2006

Nouveau contenu :
  • Ajout de l'entrée qui indique que les tables ayant des colonnes xml ne peuvent pas être interrogées.