Enterprise Manager 依「優先順序」而非相依關係產生腳本。例如認為 View 優先級高於 Function,導致相依鏈 fnT1 ← vwT1 ← fnT2 產生錯誤順序:
-- 產生順序:vwT1 → fnT1 → fnT2 (錯誤!)
-- 正確順序應為:fnT1 → vwT1 → fnT2
執行時產生嚴重錯誤:
Server: Msg 208, Level 16, State 1, Procedure vwT1, Line 4
Invalid object name 'dbo.fnT1'.
Server: Msg 208, Level 16, State 1, Procedure fnT2, Line 5
Invalid object name 'vwT1'.
操作腳本產生時對中文雙減號註釋處理有誤,英文版推測無此問題,需實測驗證。
當 SP (如 spGetIDStr) 未參考任何資料表/檢視表,但被另一 SP (spAnalyseStrList) 參考時,無法在 sysdepends 建立相依關係。產生腳本時總報告:
spGetIDStr does not exist, cannot create dependency in sysdepends,
stored procedure spAnalyseStrList created anyway.
手動調整順序亦無效,產生腳本必有誤。
-- 建立順序:spB1 → spA1 (spA1 參考 spB1)
CREATE PROC spB1 AS RETURN 11 GO
CREATE PROC spA1 AS BEGIN DECLARE @i INT EXEC @i=spB1 RETURN @i*2 END GO
-- 產生腳本卻變成:spA1 → spB1 (按字母順序!)
-- 幸好兩者皆能建立,但邏輯順序錯誤
命名 spA1/spB1 即為測試字母排序影響。建議測試 SP 與 Function、SP 群組等組合情境。