我有一个本地 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 链接服务器?这是我的链接服务器属性: