我在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".
帮助?有人?请? :)
提前致谢。
答案 0 :(得分:0)
在测试连接时,它是否可以在Windows中的ODBC源中运行?在Administrative Tools\Data Sources (ODBC)
OPENQUERY
是从“异常”(缺少更好的单词)源获取数据的好方法,因为查询是直通的。查询命令被发送到远程服务器,在那里执行,只返回结果。
如果您不使用开放查询,则取决于优化程序。如果远程服务器是SQL服务器,DB2,Oracle,优化器就会搞清楚。如果它是不寻常的,它可能决定开始移动所有表数据,然后在本地机器上启动列和行过滤 - 慢一点。
答案 1 :(得分:0)
我会说不要使用@location
参数,而是正确配置您的WT_ODBC_test
ODBC数据源。当然,您需要在server2上配置它。