Sql 无法使用具有ODBC连接的链接服务器将多部分标识符绑定到DB2

Sql 无法使用具有ODBC连接的链接服务器将多部分标识符绑定到DB2,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,当我运行这个简单的查询时 select [B00BF4CR].[IWSE4S8].[SCTRN].[STCOMP], [EPAK].[B00BF4CR].[IWSE4S8].[SCTRN].[STDATE], [EPAK].[B00BF4CR].[IWSE4S8].[SCTRN].[STUNM], [EPAK].[B00BF4CR].[IWSE4S8].[SCTRN].[STQTY] FROM [EPAK].[B00BF4CR].[IWSE4S8].[SCTRN] WHERE [EPAK]

当我运行这个简单的查询时

select [B00BF4CR].[IWSE4S8].[SCTRN].[STCOMP], 
[EPAK].[B00BF4CR].[IWSE4S8].[SCTRN].[STDATE],
[EPAK].[B00BF4CR].[IWSE4S8].[SCTRN].[STUNM],
[EPAK].[B00BF4CR].[IWSE4S8].[SCTRN].[STQTY] 
FROM [EPAK].[B00BF4CR].[IWSE4S8].[SCTRN] 
WHERE [EPAK].[B00BF4CR].[IWSE4S8].[SCTRN].[STCOMP]='51' 
AND [EPAK].[B00BF4CR].[IWSE4S8].[SCTRN].[STDATE] = 20140211 
AND [EPAK].[B00BF4CR].[IWSE4S8].[SCTRN].[STVOID] = 'N' 
ORDER BY [EPAK].[B00BF4CR].[IWSE4S8].[SCTRN].[STTCKT]
在我的sql中,我得到了以下错误

Msg 4104, Level 16, State 1, Line 3
The multi-part identifier "EPAK.B00BF4CR.IWSE4S8.SCTRN.STCOMP" could not be bound.
Msg 4104, Level 16, State 1, Line 4
The multi-part identifier "EPAK.B00BF4CR.IWSE4S8.SCTRN.STDATE" could not be bound.
Msg 4104, Level 16, State 1, Line 4
The multi-part identifier "EPAK.B00BF4CR.IWSE4S8.SCTRN.STVOID" could not be bound.
Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "B00BF4CR.IWSE4S8.SCTRN.STCOMP" could not be bound.
Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "EPAK.B00BF4CR.IWSE4S8.SCTRN.STDATE" could not be bound.
Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "EPAK.B00BF4CR.IWSE4S8.SCTRN.STUNM" could not be bound.
Msg 4104, Level 16, State 1, Line 2
The multi-part identifier "EPAK.B00BF4CR.IWSE4S8.SCTRN.STQTY" could not be bound.
Msg 4104, Level 16, State 1, Line 5
The multi-part identifier "EPAK.B00BF4CR.IWSE4S8.SCTRN.STTCKT" could not be bound.
当我在第一个上做双clic时,它突出显示了这一部分

FROM [EPAK].[B00BF4CR].[IWSE4S8].[SCTRN] 
WHERE [EPAK].[B00BF4CR].[IWSE4S8].[SCTRN].[STCOMP]='51' AND
第二个和第三个

[EPAK].[B00BF4CR].[IWSE4S8].[SCTRN].[STDATE] = 20140211 
AND [EPAK].[B00BF4CR].[IWSE4S8].[SCTRN].[STVOID] = 'N' ORDER BY
4、5和6

select [B00BF4CR].[IWSE4S8].[SCTRN].[STCOMP], 
[EPAK].[B00BF4CR].[IWSE4S8].[SCTRN].[STDATE],
[EPAK].[B00BF4CR].[IWSE4S8].[SCTRN].[STUNM],
七,

八,


最多可以有一个由四部分组成的符号。您的查询正在使该列名规则无效。表别名可以方便地避免此问题

[LINKEDSERVER].[DATABASE].[OWNER].[OBJECT]

下面是对查询的重写

-- Use a table alias
SELECT
    S.[STCOMP], 
    S.[STDATE],
    S.[STUNM],
    S.[STQTY] 
FROM 
    [EPAK].[B00BF4CR].[IWSE4S8].[SCTRN] AS S
WHERE
    S.[STCOMP]='51' AND
    S.[STDATE] = 20140211 AND
    S.[STVOID] = 'N' 
ORDER BY 
    S.[STTCKT]
通过DB2OLEDB使用分布式查询处理(DQP)进行更新和删除时存在一些问题

有关这方面的警告以及直通查询与链接服务器的示例,请参阅下面的文章


什么是[B00BF4CR]、[IWSE4S8]和[SCTRN]?这是路由[EPAK]是服务器,[B00BF4CR]是下面的内容,然后[IWSE4S8]、[SCTRN]是表名,[STTCKT]例如是属于该表的字段链接服务器的名称是什么?,您应该尝试使用
OPENQUERY
为此,链接服务器的名称是EPAKit似乎正在工作,但由于某些原因,需要花费太长的时间来获取数据[源服务器-计算时间]-确保有三个搜索列的索引。否则,它将执行全表扫描。[网络时间]-您希望返回多少行,以及两个系统之间的网络连接是什么。小型LAN/WAN管道上的大量行需要时间。[备选方案]另一种解决方案是使用本机DB2工具将源数据转储到ASCII文件。使用FTP从AS400或OS390中提取文件。使用SSI在SQL Server目标系统中加载平面文件。
[EPAK].[B00BF4CR].[IWSE4S8].[SCTRN].[STTCKT]
-- Use a table alias
SELECT
    S.[STCOMP], 
    S.[STDATE],
    S.[STUNM],
    S.[STQTY] 
FROM 
    [EPAK].[B00BF4CR].[IWSE4S8].[SCTRN] AS S
WHERE
    S.[STCOMP]='51' AND
    S.[STDATE] = 20140211 AND
    S.[STVOID] = 'N' 
ORDER BY 
    S.[STTCKT]