设置SSAS链接服务器到DB2

时间:2013-08-22 14:05:51

标签: sql-server-2008 db2 ssms

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

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

当我右键单击[SchemaX]。[TableX]表并选择

“脚本表为=>选择To ==>新窗口”,用文本打开了一个新的查询窗口

--[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] 

错误:

  

Msg 7314,Level 16,State 1,Line 1
  链接服务器“DB2OurDatabase”的OLE DB提供程序“IBMDADB2”不包含表“”DataCenterCityName2_DB2OurDatabase“。”SchemaX“。”TableX“”。该表不存在或当前用户没有该表的权限。

我有点惊讶的是,完全限定的表名包括[DataCenterCityName2_DB2OurDatabase],因为我在设置链接服务器连接时没有指定这个,但DataCenter城市的名称是正确的所以我把它作为进一步的标志Linked Server连接成功。

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

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

导致此错误。

  

Msg 208,Level 16,State 1,Line 1
  无效的对象名称'DB2OurDatabase。[SchemaX]。[TableX]'。

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

enter image description here

2 个答案:

答案 0 :(得分:0)

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

SELECT * FROM OPENQUERY(DB2数据库,'SELECT * FROM SchemaX.TableX')

答案 1 :(得分:0)

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