OPENQUERY (Transact-SQL)
Mis à jour : 17 juillet 2006
Exécute la requête directe spécifiée sur le serveur lié spécifié. Ce serveur est une source de données OLE DB. Il est possible de référencer OPENQUERY dans la clause FROM d'une requête SELECT comme s'il s'agissait du nom d'une table. Il est également possible de référencer OPENQUERY comme la table cible d'une instruction INSERT, UPDATE ou DELETE. Cela dépend des possibilités du fournisseur OLE DB. Bien que la requête puisse renvoyer plusieurs ensembles de résultats, OPENQUERY ne renvoie que le premier.
Conventions de la syntaxe de Transact-SQL
Syntaxe
OPENQUERY ( linked_server ,'query' )
Arguments
- linked_server
ID représentant le nom du serveur lié.
- 'query'
Chaîne de requête exécutée dans le serveur lié. La longueur maximale de la chaîne est limitée à 8 Ko.
Notes
OPENQUERY n'accepte pas de variables pour ses arguments.
Dans SQL Server 2000 et les versions ultérieures, il n'est pas possible d'utiliser OPENQUERY pour exécuter des procédures stockées étendues sur un serveur lié. Par contre, une procédure stockée étendue peut être exécutée sur un serveur lié en utilisant un nom en quatre parties. Par exemple :
EXEC SeattleSales.master.dbo.xp_msver
Autorisations
Tous les utilisateurs peuvent exécuter OPENQUERY. Les autorisations utilisées pour la connexion au serveur distant sont obtenues à partir des paramètres définis pour le serveur lié.
Exemples
A. Exécution d'une requête SELECT directe
L'exemple suivant crée un serveur lié, nommé OracleSvr
, qui est associé à une base de données Oracle à l'aide du fournisseur Microsoft OLE DB pour Oracle. Il exécute ensuite une requête SELECT
directe sur ce serveur lié.
Remarque : |
---|
Ce code exemple suppose qu'un alias de base de données Oracle a été créé avec le nom ORCLDB . |
EXEC sp_addlinkedserver 'OracleSvr',
'Oracle 7.3',
'MSDAORA',
'ORCLDB'
GO
SELECT *
FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM joe.titles')
GO
B. Exécution d'une requête UPDATE directe
L'exemple suivant exécute une requête UPDATE
directe sur le serveur lié créé dans l'exemple A.
UPDATE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE id = 101')
SET name = 'ADifferentName';
C. Exécution d'une requête INSERT directe
L'exemple suivant exécute une requête INSERT
directe sur le serveur lié créé dans l'exemple A.
INSERT OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles')
VALUES ('NewTitle');
D. Exécution d'une requête DELETE directe
L'exemple suivant exécute une requête DELETE
directe pour supprimer la ligne insérée dans l'exemple C.
DELETE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');
Voir aussi
Référence
DELETE (Transact-SQL)
FROM (Transact-SQL)
INSERT (Transact-SQL)
OPENDATASOURCE (Transact-SQL)
OPENROWSET (Transact-SQL)
Fonctions Rowset (Transact-SQL)
SELECT (Transact-SQL)
sp_addlinkedserver (Transact-SQL)
sp_serveroption (Transact-SQL)
UPDATE (Transact-SQL)
WHERE (Transact-SQL)
Autres ressources
Aide et Informations
Assistance sur SQL Server 2005
Historique des modifications
Version | Historique |
---|---|
17 juillet 2006 |
|
14 avril 2006 |
|