Sha*_*ggy 5 sql sql-server oracle linked-server
我正在使用OpenQuery从Oracle表中获取行集到我的SQL Server中.然后我发现有一些已知的东西OPENROWSET可以获取所有行
但它对我没有用.
SELECT a.*
FROM OPENROWSET('MSDASQL',
'DRIVER={SQL Server};SERVER=INDIANBANK;UID=ags;PWD=mypass',
'Select * From ATM_PROGNOSIS.IR_ATMMON_AGS') AS a
Run Code Online (Sandbox Code Playgroud)
错误: -
OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).".
OLE DB provider "MSDASQL" for linked server "(null)" returned message "[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied.".
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "(null)".
Run Code Online (Sandbox Code Playgroud)
我的DSN名称:INDIANBANK
我使用Microsoft OLE DB Provider for ODBC Driver创建链接服务器以连接到oracle (ORACLE DB位于远程服务器上)
我的DSN显示测试连接成功.与我的链接服务器相同.
当我执行以下查询Select * From openquery(IndianBank,'Select * From ATM_PROGNOSIS.IR_ATMMON_AGS') 它只检索一行
我的链接服务器代码: -
EXEC master.dbo.sp_addlinkedserver @server = N'INDIANBANK', @srvproduct=N'IndianBankOracle', @provider=N'MSDASQL', @datasrc=N'INDIANBANK'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'INDIANBANK',@useself=N'False',@locallogin=NULL,@rmtuser=N'ags',@rmtpassword='########'
GO
EXEC master.dbo.sp_serveroption @server=N'INDIANBANK', @optname=N'collation compatible', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'INDIANBANK', @optname=N'data access', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'INDIANBANK', @optname=N'dist', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'INDIANBANK', @optname=N'pub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'INDIANBANK', @optname=N'rpc', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'INDIANBANK', @optname=N'rpc out', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'INDIANBANK', @optname=N'sub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'INDIANBANK', @optname=N'connect timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'INDIANBANK', @optname=N'collation name', @optvalue=null
GO
EXEC master.dbo.sp_serveroption @server=N'INDIANBANK', @optname=N'lazy schema validation', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'INDIANBANK', @optname=N'query timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'INDIANBANK', @optname=N'use remote collation', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'INDIANBANK', @optname=N'remote proc transaction promotion', @optvalue=N'true'
GO
Run Code Online (Sandbox Code Playgroud)
如果您使用了这样的字符串"'MSDASQL','DRIVER = {SQL Server}; SERVER = INDIANBANK; UID = ags; PWD = mypass','选择*来自ATM_PROGNOSIS.IR_ATMMON_AGS'"您获得了无DSN连接,因此测试DSN没用.
我建议您使用此驱动程序
Oracle Data Provider for .NET.
它对Oracle更友好.
以下是
ODP.NET的示例,
其中描述了调整.
这是 ODP.NET的完整文档
希望这可以帮助 :)
请参阅下面的评论.
PS对于Microsoft驱动程序,此处显示的参数 Microsoft OLE DB Provider for ODBC
| 归档时间: |
|
| 查看次数: |
6269 次 |
| 最近记录: |