【问题标题】:Settting up a SSMS Linked Server to DB2为 DB2 设置 SSAS 链接服务器
【发布时间】:2013-08-22 14:05:51
【问题描述】:

我有一个本地 SQL Server 实例,我在该实例上创建了与名为“DB2OurDatabase”的 DB2 数据库的链接服务器连接。在创建链接服务器连接时,我指定了一个 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 链接服务器?这是我的链接服务器属性:

【问题讨论】:

    标签: sql-server-2008 db2 ssms


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我删除了括号并再次尝试并得到了同样的错误。无论如何谢谢。
      • 新的错误信息是否仍然以大写或混合大小写显示对象名称?
      【解决方案3】:

      这 3 个steps 让我找到了解决方案:

      1. 下载并安装Microsoft OLE DB Provider for DB2 Version 6.0(这是最新版本,但在您阅读这篇文章时可能会有新版本)
      2. 从开始菜单打开数据访问工具 > 文件 > 新数据源并完成所有步骤:提供臭名昭著的凭据,如服务器、端口、数据库、用户、密码。如果不确定,请联系您的 DBA。完成后测试连接并复制连接字符串

      1. 现在在 SSMS 上转到 Server Object > Linked Servers > New Linked Server,然后在 Provider string 中填写您之前从数据访问工具复制的字符串:

      完成了,你现在可以走了,

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多