Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何创建以远程ODBC为目标的链接服务器?_Sql Server_Sql Server 2005_Odbc_Linked Server_Webtrends - Fatal编程技术网

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

Sql server 如何创建以远程ODBC为目标的链接服务器?,sql-server,sql-server-2005,odbc,linked-server,webtrends,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_addl

我在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='########'
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='########'
我可以这样查询此链接服务器:

SELECT *
FROM OPENQUERY(WT_ODBC, 'SELECT * FROM CompleteViewV85.DownloadedFiles'); 
SELECT *
FROM WT_ODBC.[Complete View V8.5].CompleteViewV85.DownloadedFiles
顺便说一句,我不能用这样的四部分名称来查询它:

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.
Cannot get the column information from OLE DB provider "MSDASQL" for linked server  
"WT_ODBC".
…我验证了选项“仅限零级”未选中。 但这并不是什么大问题,因为第一个查询是有效的

我的问题是-如何从另一台服务器连接到此ODBC? 我在server2上,在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='########'
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上运行的同一查询时,出现以下错误:

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.
Cannot get the column information from OLE DB provider "MSDASQL" for linked server  
"WT_ODBC".
帮忙?有人吗?请?:)


提前感谢。

当您测试连接时,它是否在windows中的ODBC源中工作?在
管理工具\数据源(ODBC)

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


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

当您测试连接时,它是否在windows中的ODBC源中工作?在
管理工具\数据源(ODBC)

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


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

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

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

我猜您尝试在server2上运行第一个代码块,结果在最后一个代码块中出现错误,对吗?是的,我可以在两台服务器上创建SQL链接服务器,但运行“OPENQUERY”仅在第一台服务器(server1)上有效。即使通过ManagementStudio导航到此链接服务器,也会收到错误:无法为链接服务器“WTU ODBC”初始化OLE DB提供程序“MSDASQL”的数据源对象。(Microsoft SQL Server,错误:7303)我猜您尝试在server2上运行第一个代码块,结果在最后一个代码块中出现错误,对吗?是的,我可以在两台服务器上创建SQL链接服务器,但运行“OPENQUERY”仅在第一台服务器(server1)上有效。即使通过ManagementStudio导航到此链接服务器,也会收到错误:无法为链接服务器“WTU ODBC”初始化OLE DB提供程序“MSDASQL”的数据源对象。(Microsoft SQL Server,错误:7303)是的,ODBC源代码正常,基于它的链接服务器工作正常,只要它们都在同一台物理机器上。我正试图让它从远程服务器工作。没有多少链接服务器存在此问题的例子。它们中的大多数只指向一个文件,并且只声明正确的路径。我不确定是否正确使用了@location param,或者可能是登录问题。无论如何,感谢OPENQUERY提示。也许这里真正的问题是-你甚至可以直接访问远程服务器上的ODBC吗?是的,首先让它从“ODBC数据源管理员”开始工作。好的,如果我理解正确,为了在server1上访问ODBC,我必须在server2上创建新的ODBC,它将针对第一个ODBC。如果是这种情况,那么我就卡住了,因为我无法在server2上创建ODBC。server1上的ODBC是WebTrends提供的特殊类型的ODBC,它只能安装在WebTrends应用所在的服务器上。是的,ODBC必须安装在“客户端”计算机上。ODBC驱动程序被“锁定”到DB机器是非常不寻常的。是的,ODBC源代码正常,基于它的链接服务器工作正常,只要它们都在同一台物理机器上。我正试图让它从远程服务器工作。没有多少链接服务器存在此问题的例子。它们中的大多数只指向一个文件,并且只声明正确的路径。我不确定是否正确使用了@location param,或者可能是登录问题。无论如何,感谢OPENQUERY提示。也许这里真正的问题是-你甚至可以直接访问远程服务器上的ODBC吗?是的,首先让它从“ODBC数据源管理员”开始工作。好的,如果我理解正确,为了在server1上访问ODBC,我必须在server2上创建新的ODBC,它将针对第一个ODBC。如果是这种情况,那么我就卡住了,因为我无法在server2上创建ODBC。server1上的ODBC是WebTrends提供的特殊类型的ODBC,它只能安装在WebTrends应用所在的服务器上。是的,ODBC必须安装在“客户端”计算机上。ODBC驱动程序被“锁定”到DB机器是非常不寻常的。