Как создать Связанный сервер, ориентированный на удаленный ODBC?

StackOverflow https://stackoverflow.com/questions/1866174

Вопрос

У меня есть источник WebTrends ODBC на server1 и SQL Server 2005 на server2.Я хочу подключиться к этому ODBC с SQL Server на server2.До сих пор мне удавалось подключиться к этому ODBC с SQL Server, который находится на том же сервере, используя следующее определение для связанного сервера:

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='########'

Я могу запросить этот связанный сервер следующим образом:

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

Кстати, я не могу запросить его с именем из четырех частей, подобным этому:

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

Я получаю следующую ошибку:

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.

.. и я проверил, что опция "Только нулевой уровень" не отмечена.Но это не так уж и проблематично, поскольку первый запрос работает.

Моя проблема в том, как подключиться к этому ODBC, но с другого сервера?Я зашел на server2, и там в SQL Server я создал следующий связанный сервер:

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='########'

..где я поместил IP-адрес server1 в качестве параметра @location.Связанный сервер, созданный таким образом, не может подключиться к ODBC на server1.Когда я пытаюсь выполнить тот же запрос, который работает на server1, я получаю следующую ошибку:

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

Помочь?Кто-то?Пожалуйста?:)

Заранее благодарю.

Это было полезно?

Решение

Работает ли это из источников ODBC в Windows, когда вы тестируете соединение?В Administrative Tools\Data Sources (ODBC)

КСТАТИ, OPENQUERY это хороший способ получить данные из "необычных" (за неимением лучшего слова) источников, поскольку запрос является сквозным.Команда запроса отправляется на удаленный сервер, выполняется там, и возвращаются только результаты.

Если вы не используете открытый запрос, это зависит от оптимизатора.Если удаленным сервером является SQL server, DB2, Oracle, оптимизатор сам это выяснит.Если это что-то необычное, он может решить начать перемещать все табличные данные заново, а затем запустить фильтрацию столбцов и строк на локальном компьютере - намного медленнее.

Другие советы

Я бы сказал, что не используйте @location параметр, но вместо этого настройте свой WT_ODBC_test Источник данных ODBC исправен.Конечно, вам нужно настроить его на server2.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top