2

我在 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".

帮助?有人吗?请?:)

提前致谢。

4

2 回答 2

0

当您测试连接时,它是否适用于 Windows 中的 ODBC 源?在Administrative Tools\Data Sources (ODBC)

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

如果不使用开放式查询,则取决于优化器。如果远程服务器是 SQL server、DB2、Oracle,优化器会计算出来。如果出现异常情况,它可能会决定开始移动所有表数据,然后在本地机器上开始列和行过滤——速度要慢得多。

于 2009-12-08T13:11:25.603 回答
0

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

于 2009-12-08T15:06:18.630 回答