Compartir a través de


Pasar una variable a una consulta de servidor vinculado

En este artículo se describe cómo pasar una variable a una consulta de servidor vinculado.

Versión original del producto: Libros en pantalla de SQL Server
Número de KB original: 314520

Resumen

Al consultar un servidor vinculado, realiza con frecuencia una consulta de paso a través que usa la OPENQUERYinstrucción , OPENROWSETo OPENDATASOURCE . Puede ver los ejemplos de los Libros en pantalla de SQL Server para ver cómo hacerlo mediante cadenas transact-SQL predefinidas, pero no hay ejemplos de cómo pasar una variable a estas funciones. En este artículo se proporcionan tres ejemplos de cómo pasar una variable a una consulta de servidor vinculado.

Para pasar una variable a una de las funciones de paso a través, debe crear una consulta dinámica.

Los datos que incluyan comillas necesitan un control determinado.

Pasar valores básicos

Cuando se conoce la instrucción básica de Transact-SQL, pero debe pasar uno o varios valores específicos, use código similar al ejemplo siguiente:

DECLARE @TSQL varchar(8000), @VAR char(2)
SELECT @VAR = 'CA'
SELECT @TSQL = 'SELECT * FROM OPENQUERY(MyLinkedServer,''SELECT * FROM pubs.dbo.authors WHERE state = ''''' + @VAR + ''''''')'
EXEC (@TSQL)

Pasar toda la consulta

Cuando tenga que pasar toda la consulta transact-SQL o el nombre del servidor vinculado (o ambos), use código similar al ejemplo siguiente:

DECLARE @OPENQUERY nvarchar(4000), @TSQL nvarchar(4000), @LinkedServer nvarchar(4000)
SET @LinkedServer = 'MyLinkedServer'
SET @OPENQUERY = 'SELECT * FROM OPENQUERY('+ @LinkedServer + ','''
SET @TSQL = 'SELECT au_lname, au_id FROM pubs..authors'')'
EXEC (@OPENQUERY+@TSQL)

Uso del procedimiento almacenado Sp_executesql

Para evitar las comillas multicapa, use código similar al ejemplo siguiente:

DECLARE @VAR char(2)
SELECT @VAR = 'CA'
EXEC MyLinkedServer.master.dbo.sp_executesql
N'SELECT * FROM pubs.dbo.authors WHERE state = @state',
N'@state char(2)',
@VAR

Consulte también

Para obtener más información, consulte los temas siguientes: