2009-12-08 87 views
1

我有server1上的WebTrends ODBC源和server2上的SQL Server 2005。我想从server2上的SQL Server连接到此ODBC。到目前为止,我设法连接到从SQL Server这个ODBC是同一台服务器上,使用下面的定义链接服务器:如何创建针对远程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'); 

BTW ,我不能与四部分名称查询这样的:

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

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

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

帮助?有人?请? :)

在此先感谢。

+0

我的猜测是你尝试运行server2上的第一个代码块,并得到最后一个代码块中的错误,结果是否正确? – 2009-12-08 12:44:53

+0

是的,我可以在两台服务器上创建SQL链接服务器,但运行“OPENQUERY”仅适用于第一台服务器(server1)。即使当我通过Management Studio导航到此链接服务器时,也会收到错误:无法初始化链接服务器“WT_ODBC”的OLE DB提供程序“MSDASQL”的数据源对象。 (Microsoft SQL Server,错误:7303) – Dejan 2009-12-08 14:37:31

回答

0

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

顺便说一句,OPENQUERY是一个很好的方式来从“非常规”(缺乏更好的单词)源获取数据,因为查询是传递。查询命令被发送到远程服务器,在那里执行,只有结果返回。

如果您不使用打开的查询,它取决于优化程序。如果远程服务器是SQL服务器,DB2,Oracle,那么优化器会计算出来。如果它是不寻常的,它可能决定开始移动所有表格数据,然后在本地机器上开始列和行过滤 - 方式更慢。

+0

是的,ODBC源是可以的,并且基于它的链接服务器工作正常,只要它们都在同一台物理机器上。我试图让它从远程服务器上运行。这个问题没有太多链接服务器的例子。他们大多数只是指向一个文件,他们只是说明了正确的路径。我不确定我是否正确使用@location param,或者它可能是登录问题。无论如何,感谢OPENQUERY小费。 – Dejan 2009-12-08 14:42:13

+0

也许这里真正的问题是 - 你甚至可以直接访问远程服务器上的ODBC? – Dejan 2009-12-08 14:47:39

+0

是的,首先从“ODBC数据源管理员”开始工作。 – 2009-12-08 15:04:02

0

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

相关问题