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: SQL Server Libros en pantalla
Número de KB original: 314520
Resumen
Al consultar un servidor vinculado, se realiza con frecuencia una consulta de paso a través que usa la OPENQUERY
instrucción , OPENROWSET
o OPENDATASOURCE
. Puede ver los ejemplos de SQL Server Libros en pantalla para ver cómo hacerlo mediante cadenas de 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.
Cualquier dato que incluya comillas necesita un control concreto.
Pasar valores básicos
Cuando se conozca la instrucción Básica de Transact-SQL, pero tenga que pasar uno o más 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 de varias capas, 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
Consulta también
Para obtener más información, consulte los siguientes temas:
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de