如何创建目标远程ODBC的链接服务器?

时间:2009-12-08 10:49:20

标签: sql-server sql-server-2005 odbc linked-server webtrends

我在server1上有一个WebTrends ODBC源,在server2上有一个SQL Server 2005。我想从server2上的SQL Server连接到此ODBC。到目前为止,我设法从同一服务器上的SQL Server连接到此ODBC,使用以下链接服务器定义:

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

..我将server1的IP地址作为@location参数放置。 以这种方式创建的链接服务器无法连接到server1上的ODBC。当我尝试运行在server1上运行的相同查询时,我收到以下错误:

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

帮助?有人?请? :)

提前致谢。

2 个答案:

答案 0 :(得分:0)

在测试连接时,它是否可以在Windows中的ODBC源中运行?在Administrative Tools\Data Sources (ODBC)

BTW,OPENQUERY是从“异常”(缺少更好的单词)源获取数据的好方法,因为查询是直通的。查询命令被发送到远程服务器,在那里执行,只返回结果。

如果您不使用开放查询,则取决于优化程序。如果远程服务器是SQL服务器,DB2,Oracle,优化器就会搞清楚。如果它是不寻常的,它可能决定开始移动所有表数据,然后在本地机器上启动列和行过滤 - 慢一点。

答案 1 :(得分:0)

我会说不要使用@location参数,而是正确配置您的WT_ODBC_test ODBC数据源。当然,您需要在server2上配置它。