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

asf*_*sdf 0 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].[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]
Run Code Online (Sandbox Code Playgroud)

在我的 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.
Run Code Online (Sandbox Code Playgroud)

当我双击第一个时,它会突出显示这一部分

FROM [EPAK].[B00BF4CR].[IWSE4S8].[SCTRN] 
WHERE [EPAK].[B00BF4CR].[IWSE4S8].[SCTRN].[STCOMP]='51' AND
Run Code Online (Sandbox Code Playgroud)

第二个和第三个

[EPAK].[B00BF4CR].[IWSE4S8].[SCTRN].[STDATE] = 20140211 
AND [EPAK].[B00BF4CR].[IWSE4S8].[SCTRN].[STVOID] = 'N' ORDER BY
Run Code Online (Sandbox Code Playgroud)

4、5 和 6

select [B00BF4CR].[IWSE4S8].[SCTRN].[STCOMP], 
[EPAK].[B00BF4CR].[IWSE4S8].[SCTRN].[STDATE],
[EPAK].[B00BF4CR].[IWSE4S8].[SCTRN].[STUNM],
Run Code Online (Sandbox Code Playgroud)

7

[EPAK].[B00BF4CR].[IWSE4S8].[SCTRN].[STQTY] 
Run Code Online (Sandbox Code Playgroud)

8

[EPAK].[B00BF4CR].[IWSE4S8].[SCTRN].[STTCKT]
Run Code Online (Sandbox Code Playgroud)

CRA*_*DBA 7

您最多可以有一个四部分符号。您的查询使该列名称规则无效。表别名可以用来避免这个问题。

[链接服务器].[数据库].[所有者].[对象]

这是查询的重写。

-- 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]
Run Code Online (Sandbox Code Playgroud)

通过 DB2OLEDB 使用分布式查询处理 (DQP) 进行更新和删除存在一些问题。

有关此问题的警告以及传递查询与链接服务器的示例,请参阅下面的文章。

http://support.microsoft.com/kb/222937