mik*_*imr 5 sql-server oracle oledb tnsnames openquery
我有一个Oracle 11g XE数据库,我想将其转移到SQL Server Express 2005中.
起初我以为我只是在Oracle中生成表作为SQL,操纵数据格式,并在SQL Server中运行查询.这适用于小型表,但我有几个表有几十万行,有些表有数百万行,所以这个解决方案不起作用.
然后我创建了一个包含以下内容的TNS文件:
OracleTnsName =
(
DESCRIPTION=
(
ADDRESS = (PROTOCOL=TCP)(HOST=localhost)(PORT=1521)
)
(
CONNECT_DATA = (SERVICE_NAME=XE)
)
)
Run Code Online (Sandbox Code Playgroud)
我按照我在别处找到的关于如何生成ODBC连接的指令,并且'测试连接'成功了.
然后我运行这些命令在MS SQL中创建链接服务器:
EXEC sp_addlinkedserver
@server = 'OracleLinkServer'
,@srvproduct = 'OracleTnsName'
,@provider = 'MSDASQL'
,@datasrc = 'OracleTnsName'
EXEC sp_addlinkedsrvlogin
@rmtsrvname = 'OracleLinkServer'
,@useself = 'False'
,@locallogin = NULL
,@rmtuser = 'user'
,@rmtpassword = 'password'
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试使用openquery以下方法从SQL Server查询Oracle数据库中的表:
select * from openquery(OracleLinkServer, 'select * from oracleTable')
Run Code Online (Sandbox Code Playgroud)
但得到一个错误:
消息7399,级别16,状态1,行1
链接服务器"OracleLinkServer"的OLE DB提供程序"MSDASQL"报告错误.提供商未提供有关错误的任何信息.
消息7303,级别16,状态1,行1
无法为链接服务器"OracleLinkServer"初始化OLE DB提供程序"MSDASQL"的数据源对象.
当我检查链接服务器的属性,只需单击确定,我收到此错误:
"链接服务器已更新但连接测试失败.是否要编辑链接服务器属性?"
附加信息:
执行Transact-SQL语句或批处理时发生异常.(Microsoft.SqlServer.Express.ConnectionInfo)
链接服务器"OracleLinkServer"的OLE DB提供程序"MSDASQL"报告错误.提供商未提供有关错误的任何信息.无法为链接服务器"OracleLinkServer"初始化OLE DB提供程序"MSDASQL"的数据源对象.(Microsoft SQL Server,错误:7399)
如需帮助,请单击:http://go.microsoft.com/fwlink?ProdName = Microsoft + SQL + Server&PrinterVer = 09.00.5000&EvtSrc = MSSQLServer&EvidID = 7399&LinkId = 20476
纽扣:
&是
请帮忙!
谢谢
如果您已成功添加链接服务器,则不再需要OPENQUERY. 您可以只包含链接服务器名称作为限定名称的第一部分,如下所示:
SELECT * FROM OracleLinkServer.database.schema.table
Run Code Online (Sandbox Code Playgroud)
不确定您需要哪些部分,但点是关键。首先尝试这个:
SELECT * FROM OracleLinkServer...oracleTable
Run Code Online (Sandbox Code Playgroud)