gpt4 book ai didi

SQL 到 Oracle 链接服务器 Openquery 检索单行

转载 作者:行者123 更新时间:2023-12-03 00:03:23 26 4
gpt4 key购买 nike

我正在使用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

错误:-

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)".

我的 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

最佳答案

如果您使用这样的字符串“'MSDASQL','DRIVER={SQL Server};SERVER=INDIANBANK;UID=ags;PWD=mypass','Select * From ATM_PROGNOSIS.IR_ATMMON_AGS'”,您将获得无 DSN 的字符串连接,因此 DSN 测试毫无用处。

我推荐你乘坐这个司机
Oracle Data Provider for .NET
与Oracle友好得多。

这里是
the example for ODP.NET
其中描述了调整。

这是 the full docs for ODP.NET

希望这有帮助:)

请参阅下面我的评论。

附注对于 Microsoft 驱动程序,参数如下所示 Microsoft OLE DB Provider for ODBC

关于SQL 到 Oracle 链接服务器 Openquery 检索单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14557881/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com