2014-07-17 43 views
0

有趣的問題。我有以下CTE連接來自鏈接服務器的一些表格,這是我們的SAP數據。此CTE位於存儲過程中,然後通過定時器上的SQL Server代理作業(每10分鐘)執行一次。這運行良好近20小時,然後死亡與多部分標識符不能綁定錯誤(確切的錯誤低於CTE)。具有鏈接服務器的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
Statement(s) could not be prepared.

Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "Tbl1008.AUFNR" could not be bound.

Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "Tbl1008.AUFNR" could not be bound.

+0

我沒有看到鏈接服務器引用任何部分4名在SQL ...? – DarrenMB

+0

「Tbl1008.AUFNR」對我來說是一個很大的紅點,因爲它不在您的查詢中。我期望它是一個用於視圖或其他相關子對象的子組件;系統可能會重新創建或更改此視圖,導致錯誤。 – DarrenMB

+0

以4部分命名 - >正在通過同義詞進行調用。 – devnate

回答

0

看來您錯過了鏈接服務器的完整參考資料,如「多部分i標識符「Tbl1008.AUFNR」不能被綁定。「您需要指定作業的鏈接服務器對象的完整名稱才能綁定表對象。做到這一點,如下所示:。

[服務器] [數據庫名稱] [SCHEMA_NAME] [表名]

+0

我通過同義詞運行這個,我需要做一個4部分名稱,而不是syn嗎? – devnate

+0

剛剛通過並使用了4個部分的名稱,並沒有改變。 – devnate

相關問題