Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Azure SQL Managed Instance
Executa a consulta pass-through especificada no servidor ligado especificado. Este servidor é uma fonte de dados OLE DB. O OPENQUERY pode ser referenciado na cláusula FROM de uma consulta como se fosse um nome de tabela. O OPENQUERY também pode ser referenciado como tabela alvo de uma instrução INSERT, UPDATE ou DELETE. Isto está sujeito às capacidades do fornecedor OLE DB. Embora a consulta possa devolver múltiplos conjuntos de resultados, o OPENQUERY devolve apenas o primeiro.
Convenções sintáticas Transact-SQL
Sintaxe
OPENQUERY ( linked_server ,'query' )
Argumentos
linked_server
É um identificador que representa o nome do servidor ligado.
'consulta'
É a cadeia de consulta executada no servidor ligado. O comprimento máximo da corda é de 8 KB.
Observações
O OPENQUERY não aceita variáveis para os seus argumentos.
O OPENQUERY não pode ser usado para executar procedimentos armazenados estendidos num servidor ligado. No entanto, um procedimento armazenado alargado pode ser executado num servidor ligado usando um nome de quatro partes. Por exemplo:
EXEC SeattleSales.master.dbo.xp_msver
Qualquer chamada para OPENDATASOURCE, OPENQUERY ou OPENROWSET na cláusula FROM é avaliada separadamente e independentemente de qualquer chamada para essas funções usadas como destino da atualização, mesmo que argumentos idênticos sejam fornecidos para as duas chamadas. Em especial, as condições de filtragem ou de junção aplicadas ao resultado de uma dessas chamadas não têm qualquer efeito sobre os resultados da outra.
Permissões
Qualquer utilizador pode executar o OPENQUERY. As permissões usadas para se ligar ao servidor remoto são obtidas a partir das definições definidas para o servidor ligado.
Exemplos
A. Execução de uma consulta pass-through UPDATE
O exemplo seguinte utiliza uma consulta pass-through UPDATE contra o servidor ligado chamado OracleSvr.
UPDATE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE id = 101')
SET name = 'ADifferentName';
B. Execução de uma consulta INSERT pass-through
O exemplo seguinte utiliza uma consulta pass-through INSERT contra o servidor ligado chamado OracleSvr.
INSERT OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles')
VALUES ('NewTitle');
C. Execução de uma consulta pass-through DELETE
O exemplo seguinte utiliza uma consulta de passagem DELETE para eliminar a linha inserida no exemplo B.
DELETE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');
D. Execução de uma consulta pass-through SELECT
O exemplo seguinte utiliza uma consulta pass-through SELECT para selecionar a linha inserida no exemplo B.
SELECT * FROM OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');
Ver também
DELETE (Transact-SQL)
FROM (Transact-SQL)
INSERIR (Transact-SQL)
OPENDATASOURCE (Transact-SQL)
OPENROWSET (Transact-SQL)
SELECT (Transact-SQL)
sp_addlinkedserver (Transact-SQL)
sp_serveroption (Transact-SQL)
ATUALIZAÇÃO (Transact-SQL)
ONDE (Transact-SQL)