Como criar servidor alvo ODBC remoto ligado?
-
18-09-2019 - |
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.
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 ??p>
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.