OPENQUERY (Transact-SQL)OPENQUERY (Transact-SQL)

SE APLICA A: síSQL Server (a partir de 2008) noAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server (starting with 2008) noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Ejecuta la consulta de paso a través especificada en el servidor vinculado especificado.Executes the specified pass-through query on the specified linked server. Este servidor es un origen de datos OLE DB.This server is an OLE DB data source. Se puede hacer referencia a OPENQUERY en la cláusula FROM de una consulta como si fuera un nombre de tabla.OPENQUERY can be referenced in the FROM clause of a query as if it were a table name. También se puede hacer referencia a OPENQUERY como la tabla de destino de una instrucción INSERT, UPDATE, DELETE o TRUNCATE.OPENQUERY can also be referenced as the target table of an INSERT, UPDATE, or DELETE statement. Esto está sujeto a las capacidades del proveedor OLE DB.This is subject to the capabilities of the OLE DB provider. Aunque la consulta puede devolver varios conjuntos de resultados, OPENQUERY solo devuelve el primero.Although the query may return multiple result sets, OPENQUERY returns only the first one.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

OPENQUERY ( linked_server ,'query' )  

ArgumentosArguments

linked_serverlinked_server
Es un identificador que representa el nombre del servidor vinculado.Is an identifier representing the name of the linked server.

' query '' query '
Es la cadena de consulta que se ejecuta en el servidor vinculado.Is the query string executed in the linked server. La longitud máxima de la cadena es de 8 KB.The maximum length of the string is 8 KB.

NotasRemarks

OPENQUERY no acepta variables para sus argumentos.OPENQUERY does not accept variables for its arguments.

No se puede utilizar OPENQUERY para ejecutar procedimientos almacenados extendidos en un servidor vinculado.OPENQUERY cannot be used to execute extended stored procedures on a linked server. Sin embargo, se puede ejecutar un procedimiento almacenado extendido en un servidor vinculado mediante un nombre de cuatro partes.However, an extended stored procedure can be executed on a linked server by using a four-part name. Por ejemplo:For example:

EXEC SeattleSales.master.dbo.xp_msver  

Las llamadas a OPENDATASOURCE, OPENQUERY u OPENROWSET en la cláusula FROM se evalúan por separado y de forma independiente de otras llamadas a estas funciones utilizadas como destino de la actualización, incluso si se han suministrado argumentos idénticos a las dos llamadas.Any call to OPENDATASOURCE, OPENQUERY, or OPENROWSET in the FROM clause is evaluated separately and independently from any call to these functions used as the target of the update, even if identical arguments are supplied to the two calls. En particular, las condiciones de filtro o combinación aplicadas en el resultado de una de esas llamadas no tienen ningún efecto en los resultados de la otra llamada.In particular, filter or join conditions applied on the result of one of those calls have no effect on the results of the other.

PermisosPermissions

Cualquier usuario puede ejecutar OPENQUERY.Any user can execute OPENQUERY. Los permisos utilizados para conectarse al servidor remoto se obtienen de la configuración definida para el servidor vinculado.The permissions that are used to connect to the remote server are obtained from the settings defined for the linked server.

EjemplosExamples

A.A. Ejecutar una consulta UPDATE de paso a travésExecuting an UPDATE pass-through query

En el ejemplo siguiente se usa una consulta UPDATE de paso a través en el servidor vinculado creado en el ejemplo A.The following example uses a pass-through UPDATE query against the linked server created in example A.

UPDATE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE id = 101')   
SET name = 'ADifferentName';  

B.B. Ejecutar una consulta INSERT de paso a travésExecuting an INSERT pass-through query

En el ejemplo siguiente se usa una consulta INSERT de paso a través en el servidor vinculado creado en el ejemplo A.The following example uses a pass-through INSERT query against the linked server created in example A.

INSERT OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles')  
VALUES ('NewTitle');  

C.C. Ejecutar una consulta DELETE de paso a travésExecuting a DELETE pass-through query

En el ejemplo siguiente se usa una consulta DELETE de paso a través para eliminar la columna insertada en el ejemplo C.The following example uses a pass-through DELETE query to delete the row inserted in example C.

DELETE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');  

D.D. Ejecutar una consulta SELECT de paso a travésExecuting a SELECT pass-through query

En este ejemplo se usa una consulta SELECT de paso a través para eliminar la columna insertada en el ejemplo C.The following example uses a pass-through SELECT query to select the row inserted in example C.

SELECT * FROM OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');  

Consulte tambiénSee Also

DELETE (Transact-SQL) DELETE (Transact-SQL)
FROM (Transact-SQL) FROM (Transact-SQL)
INSERT (Transact-SQL) INSERT (Transact-SQL)
OPENDATASOURCE (Transact-SQL) OPENDATASOURCE (Transact-SQL)
OPENROWSET (Transact-SQL) OPENROWSET (Transact-SQL)
Rowset Functions (Transact-SQL) Rowset Functions (Transact-SQL)
SELECT (Transact-SQL) SELECT (Transact-SQL)
sp_addlinkedserver (Transact-SQL) sp_addlinkedserver (Transact-SQL)
sp_serveroption (Transact-SQL) sp_serveroption (Transact-SQL)
UPDATE (Transact-SQL) UPDATE (Transact-SQL)
WHERE (Transact-SQL)WHERE (Transact-SQL)