Função T-SQL AbrirConsulta falhar executar em servidores vinculados

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 297368
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sintomas
Se você tentar executar um comando AbrirConsulta em um servidor vinculado do SQL Server 2000, não há resultados serão retornados. Por exemplo, executar a consulta a seguir:
SELECT * FROM OPENQUERY (ServerName, 'xp_logininfo')				
gera o seguinte erro:
Servidor: Mensagem 7357, nível 16, estado 2, linha 1
Não pôde processar o objeto 'xp_logininfo'. O provedor OLE DB 'SQLOLEDB' indica que o objeto não tem colunas.
Causa
AbrirConsulta precisa metadados sobre as colunas em tempo de compilação. Para recuperar os metadados, AbrirConsulta faz chamadas de OLE DB que eventualmente executar a consulta com a opção SET FMTONLY ON. Como resultado, AbrirConsulta Falha ao executar. Devido a esse comportamento, consultas que não retornam metadados sobre colunas, como procedimentos armazenados do SQL Server, não podem ser executadas usando AbrirConsulta.
Como Contornar
Para executar procedimentos armazenados, você pode usar consultas de nome de quatro partes distribuída. Por exemplo:
exec ServerName.master.dbo.xp_logininfo
como alternativa, você pode usar a SET FMTONLY OFF opção antes da instrução para executar o estendido procedimento armazenado. Por exemplo:
SELECT * FROM OPENQUERY ('ServerName','SET FMTONLY OFF EXEC xp_logininfo')
Mais Informações
Por design, OpenQuery (T-SQL) não pode ser usado para executar procedimentos armazenados estendidos em um servidor vinculado. O código de exemplo a seguir demonstra esse comportamento:
Use MasterGOexec sp_addlinkedserver 'ServerName'GOexec sp_addlinkedsrvlogin 'ServerName', false, 'sa', 'sa', 'SaPassword'GOSELECT * FROM OPENQUERY (ServerName, 'xp_logininfo') GO				

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 297368 - Última Revisão: 12/06/2015 02:24:37 - Revisão: 4.2

Microsoft SQL Server 2000 Standard Edition

  • kbnosurvey kbarchive kbmt kbpending kbprb KB297368 KbMtpt
Comentários