带链接服务器的CTE:无法绑定多部件标识符

时间:2014-07-17 18:25:53

标签: sql sql-server sap common-table-expression linked-server

有趣的问题。我有以下CTE来连接来自链接服务器的一些表,这是我们的SAP数据。此CTE位于存储过程中,然后通过计时器上的SQL Server代理作业执行(每10分钟一次)。这运行了差不多20个小时然后死了多部分标识符无法绑定错误(精确错误低于CTE)。

运行作业的服务器:SQL Server 2008 R2(无SP)

链接服务器:SQL Server 2005 SP3容纳SAP

CTE:

WITH TaktValues ([Counter], NODE, PLNNR) AS 
(
    SELECT 
       MAX(plpo1.ZAEHL) AS [Counter], MAX(plpo1.PLNKN) AS NODE, plpo1.PLNNR 
    FROM 
       etl.PLPO plpo1
    GROUP BY plpo1.PLNNR
)
SELECT 
    s022.AUFNR AS WorkOrder,
    (CASE
        WHEN plpo.SPLIM = 0 THEN 0
        ELSE plpo.VGW01/plpo.SPLIM
        END) AS TaktTime
INTO 
    [plc].[TaktTime]
FROM 
    etl.S022 s022
INNER JOIN 
    etl.AFPO afpo on afpo.AUFNR = s022.AUFNR
INNER JOIN 
    etl.AFKO afko on afko.AUFNR = s022.AUFNR
INNER JOIN 
    etl.PLPO on plpo.PLNNR = afko.PLNNR
INNER JOIN 
    TaktValues ON plpo.PLNNR = TaktValues.PLNNR 
               AND plpo.ZAEHL = TaktValues.[Counter] 
               AND plpo.PLNKN = TaktValues.NODE
WHERE 
    s022.AUFNR IN (SELECT DISTINCT WorkOrder FROM plc.AlarmData)
ORDER BY 
    s022.AUFNR DESC

错误:

  

Msg 8180,Level 16,State 1,Line 1
  声明无法准备。

     

Msg 4104,Level 16,State 1,Line 1
  多部分标识符" Tbl1008.AUFNR"无法受约束。

     

Msg 4104,Level 16,State 1,Line 1
  多部分标识符" Tbl1008.AUFNR"无法受约束。

1 个答案:

答案 0 :(得分:0)

似乎您缺少对链接服务器的完整引用,如“多部分标识符”Tbl1008.AUFNR“无法绑定”中所述。您需要为作业指定链接服务器对象的完整名称,以便能够绑定表对象。这样做:

[服务器]。[DATABASE_NAME]。[SCHEMA_NAME]。[表名]