【问题标题】:Select from IBM DB2 using Openquery() and member使用 Openquery() 和成员从 IBM DB2 中选择
【发布时间】:2017-08-30 13:45:08
【问题描述】:

我想使用 SQL Server 2008 从 IBM DB2 服务器获取一些数据。

为此我尝试使用:

SELECT * From Openquery(LINKED_SRV,'Select * from dta.Filename')

这给了我数据,虽然是相当旧的数据。

我已经收集到更新的数据在服务器上的另一个成员中,并且默认成员是我尝试从中导入数据的过时成员。

我被告知当前会员是PROD2017。我已经阅读了一些IBM DB2 文档,其中使用了Library.Filename(Member) 约定,但使用的是:

 SELECT * From Openquery(LINKED_SRV,'Select * from dta.Filename(PROD2017)')

但这给了我一个不支持( 的错误。

在失败的几次尝试中,我也尝试过使用:

 SELECT * From Openquery(LINKED_SRV,'Select * from dta.Filename"(PROD2017)"')

它实际上给出了一个结果集,但它与省略成员资格的原始结果集相同,所以我认为无论哪种方式查询都有一些问题。

DB2 服务器使用会员资格时,我如何使用 openquery() 从使用 Sql 服务器的 IBM DB2 服务器中查找数据?

【问题讨论】:

  • 我发布了一个基本上说要这样做的答案:SELECT * FROM OPENQUERY(LINKED_SVR, 'SELECT * FROM RETAILDB.IICPF01 FETCH FIRST 10 ROWS ONLY WITH UR') 但后来我意识到你已经尝试过这。你的问题解决了吗?
  • @smoore4 据我了解,无法使用 openquery 从特定成员那里获取数据。但是我已经与我们的 DB2 提供者进行了交谈,它以某种方式使当前成员成为默认成员,因此当您执行常规 OPENQUERY 语句时,您将获得当前数据。

标签: sql-server db2 openquery


【解决方案1】:

Cenderze,

我可以从我的 SQL 服务器通过链接服务器查询我的 DB2 机器,而无需 OPENQUERY。例如:

select t1.ordno from LinkedServer.Database.Library.Table t1

注意别名和 4 部分标识符的使用。将这些替换为您的具体情况,然后告诉我会发生什么。

M

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多