Pergunta

Eu tenho uma fonte ODBC WebTrends em server1 e SQL Server 2005 em server2. Eu quero ligar a este ODBC do SQL Server em server2. Até agora, consegui conectar a este ODBC do SQL Server que é no mesmo servidor, usando seguinte definição para o servidor vinculado:

EXEC sp_addlinkedserver 
@server = N'WT_ODBC', 
@provider=N'MSDASQL', 
@datasrc=N'WT_ODBC_test'

EXEC sp_addlinkedsrvlogin 
@rmtsrvname=N'WT_ODBC',
@useself=N'False',
@locallogin=N'sa',
@rmtuser=N'administrator',
@rmtpassword='########'

I podem consultar este servidor vinculado como este:

SELECT *
FROM OPENQUERY(WT_ODBC, 'SELECT * FROM CompleteViewV85.DownloadedFiles'); 

BTW, eu não posso consultá-lo com o nome de quatro partes assim:

SELECT *
FROM WT_ODBC.[Complete View V8.5].CompleteViewV85.DownloadedFiles

Eu recebo o seguinte erro:

Invalid use of schema or catalog for OLE DB provider "MSDASQL" for linked server   
"WT_ODBC". A four-part name was supplied, but the provider does not expose the  
necessary   interfaces to use a catalog or schema.

.. e eu verificou-se que a opção "Nível zero apenas" não está marcada. Mas isso não é tão problemático, uma vez que as obras primeira consulta.

O meu problema é - como se conectar a este ODBC, mas de outro servidor? Eu fui em server2, e não no SQL Server Eu criei o seguinte servidor vinculado:

EXEC sp_addlinkedserver 
@server = N'WT_ODBC', 
@srvproduct=N'Microsoft OLE DB Provider for ODBC', 
@provider=N'MSDASQL', 
@datasrc=N'WT_ODBC_test',
@location=N'10.254.251.20'

EXEC sp_addlinkedsrvlogin 
@rmtsrvname=N'WT_ODBC',
@useself=N'False',
@locallogin=N'sa',
@rmtuser=N'administrator',
@rmtpassword='########'

.. onde coloquei o endereço IP do server1 como parâmetro @location. servidor vinculado que é criado desta forma não pode se conectar a ODBC em server1. Quando tento executar a mesma consulta que funciona em server1, eu recebo o seguinte erro:

Cannot get the column information from OLE DB provider "MSDASQL" for linked server  
"WT_ODBC".

Ajuda? Alguém? Por favor? :)

Agradecemos antecipadamente.

Foi útil?

Solução

Será que funciona a partir de fontes ODBC no Windows, quando você testar conexão? Em Administrative Tools\Data Sources (ODBC)

BTW, OPENQUERY é uma boa maneira de obter dados através de "incomum" (por falta de palavra melhor) fontes, porque a consulta é pass-through. O comando consulta é enviada para o servidor remoto, executado lá e apenas os resultados são retornados de volta.

Se você não usar consulta aberta, depende de otimizador. Se o servidor remoto é servidor SQL, DB2, Oracle, o otimizador irá descobrir isso. Se é algo incomum, pode decidir começar a mover todos os dados da tabela mais e, em seguida, começar a coluna e linha de filtragem na máquina local -. Forma mais lenta

Outras dicas

Eu diria que não usar o parâmetro @location, mas em vez configurar sua fonte de dados ODBC WT_ODBC_test corretamente. Você precisa configurá-lo em server2 é claro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top