OPENQUERY (Transact-SQL)
Actualizado: 17 de julio de 2006
Ejecuta la consulta de paso a través especificada en el servidor vinculado especificado. Este servidor es un origen de datos OLE DB. Se puede hacer referencia a OPENQUERY en la cláusula FROM de una consulta como si fuera un nombre de tabla. También se puede hacer referencia a OPENQUERY como la tabla de destino de una instrucción INSERT, UPDATE, DELETE o TRUNCATE. Esto está sujeto a las capacidades del proveedor OLE DB. Aunque la consulta puede devolver varios conjuntos de resultados, OPENQUERY sólo devuelve el primero.
Convenciones de sintaxis de Transact-SQL
Sintaxis
OPENQUERY ( linked_server ,'query' )
Argumentos
- linked_server
Es un identificador que representa el nombre del servidor vinculado.
- 'query'
Es la cadena de consulta que se ejecuta en el servidor vinculado. La longitud máxima de la cadena es de 8 KB.
Notas
OPENQUERY no acepta variables como argumentos.
En SQL Server 2000 y versiones posteriores, no se puede utilizar OPENQUERY para ejecutar procedimientos almacenados extendidos en un servidor vinculado. Sin embargo, se puede ejecutar un procedimiento almacenado extendido en un servidor vinculado mediante un nombre de cuatro partes. Por ejemplo:
EXEC SeattleSales.master.dbo.xp_msver
Permisos
Cualquier usuario puede ejecutar OPENQUERY. Los permisos utilizados para conectarse al servidor remoto se obtienen de la configuración definida para el servidor vinculado.
Ejemplos
A. Ejecutar una consulta SELECT de paso a través
En el siguiente ejemplo se crea un servidor vinculado denominado OracleSvr
para una base de datos de Oracle mediante el proveedor Microsoft OLE DB para Oracle. En este ejemplo se utiliza una consulta SELECT
de paso a través en este servidor vinculado.
[!NOTA] En este ejemplo se supone que se ha creado un alias de base de datos Oracle denominado
ORCLDB
.
EXEC sp_addlinkedserver 'OracleSvr',
'Oracle 7.3',
'MSDAORA',
'ORCLDB'
GO
SELECT *
FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM joe.titles')
GO
B. Ejecutar una consulta UPDATE de paso a través
En el ejemplo siguiente se usa una consulta UPDATE
de paso a través en el servidor vinculado creado en el ejemplo A.
UPDATE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE id = 101')
SET name = 'ADifferentName';
C. Ejecutar una consulta INSERT de paso a través
En el ejemplo siguiente se usa una consulta INSERT
de paso a través en el servidor vinculado creado en el ejemplo A.
INSERT OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles')
VALUES ('NewTitle');
D. Ejecutar una consulta DELETE de paso a través
En el ejemplo siguiente se usa una consulta DELETE
de paso a través para eliminar la columna insertada en el ejemplo C.
DELETE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');
Vea también
Referencia
DELETE (Transact-SQL)
FROM (Transact-SQL)
INSERT (Transact-SQL)
OPENDATASOURCE (Transact-SQL)
OPENROWSET (Transact-SQL)
Funciones de conjuntos de filas (Transact-SQL)
SELECT (Transact-SQL)
sp_addlinkedserver (Transact-SQL)
sp_serveroption (Transact-SQL)
UPDATE (Transact-SQL)
WHERE (Transact-SQL)
Otros recursos
Ayuda e información
Obtener ayuda sobre SQL Server 2005
Historial de cambios
Versión | Historial |
---|---|
17 de julio de 2006 |
|
14 de abril de 2006 |
|