0

我有一个本地 SQL Server 实例,我在该实例上创建了一个到名为“DB2OurDatabase”的 DB2 数据库的 Linked Server 连接。在创建链接服务器连接时,我指定了一个 UID 和 PWD,我在各种查询工具或应用程序中使用它来查询“[SchemaX].[TableX]”。

我似乎成功地创建了链接服务器:在 SSMS 的链接服务器节点下创建了一个名为“DB2OurDatabase”的链接服务器节点对象,当我展开它时,我能够看到数据库中的表。

当我用鼠标右键单击 [SchemaX].[TableX] 表并选择

“Script Table as => Select To ==> New Window”,打开一个新的查询窗口,其中包含文本

--[DB2OurDatabase].[DataCenterCityName2_DB2OurDatabase].[SchemaX].[TableX] 
contains no columns that can be selected or the current user does not have permissions on that object.
GO

我不明白我如何能够创建一个可以查看数据库中表名的链接服务器,但显然似乎遇到了似乎缺乏查询表的权限,即使我使用的凭据与我相同曾在 Squirell 中使用过 SQL 查询工具,例如查询表。

在 SSMS 中,我尝试执行此操作

SELECT * 
FROM [DB2OurDatabase].[DataCenterCityName2_DB2OurDatabase].[SchemaX].[TableX] 

错误:

消息 7314,级别 16,状态 1,第 1 行
链接服务器“DB2OurDatabase]”的 OLE DB 提供程序“IBMDADB2”不包含表“”DataCenterCityName2_DB2OurDatabase“。”SchemaX“。”TableX“”。该表不存在或当前用户对该表没有权限。

我有点惊讶的是完全限定的表名包含 [DataCenterCityName2_DB2OurDatabase],因为我在设置链接服务器连接时没有指定这个,但是数据中心城市的名称是正确的,所以我认为这是链接服务器的进一步标志服务器连接成功。

尽管如此,我也尝试执行删除此级别的完全限定表名:

SELECT * 
FROM [DB2OurDatabase].[SchemaX].[TableX] 

这导致了这个错误。

消息 208,级别 16,状态 1,第 1 行
无效的对象名称“DB2OurDatabase.[SchemaX].[TableX]”。

我需要做什么来创建一个允许我查询 DB2 数据库中的表的 DB2 链接服务器?这是我的链接服务器属性:

在此处输入图像描述

4

3 回答 3

0

显然,您通过替换对象名称修改了实际命令,因此无法确定,但问题可能是由于您使用带引号的标识符(那些方括号)引起的,这实际上使对象名称区分大小写。默认情况下,DB2 将创建大写的对象(表、模式)名称,除非它们被引用。create table MySchema.MyTable...DB2 端的(不带引号的)将创建 table MYSCHEMA.MYTABLE,并且稍后从 SSMS 引用它[MySchema].[MyTable](使用带引号的标识符)显然会失败。

于 2013-08-22T18:47:14.937 回答
0

我还没有研究从 Sql Server 连接和查询 DB2 可能有多种方法,但这很有效:

SELECT * FROM OPENQUERY(DB2OurDatabase, 'SELECT * FROM SchemaX.TableX')

于 2013-08-22T16:39:48.043 回答
0

These are the 3 steps that bring me to the solution:

  1. Download and install Microsoft OLE DB Provider for DB2 Version 6.0 (this is the latest version but by the time you read this post there might be a new version now)
  2. From the start menu open the Data Access Tool > File > New Data Source and complete all the steps: provide the notorious credentials like Server, Port, Database, User, Password. If unsure contact your DBA. Once completed test the connection and copy the Connection String

enter image description here

  1. Now on SSMS go to Server Object > Linked Servers > New Linked Server and fill up like in picture setting up in the Provider string the string you copied before from the Data Access Tool:

enter image description here

Done, you are good to go now,

于 2021-10-04T10:08:10.840 回答