dbo.ufn_test_1。dbo.ufn_test_2。sp_helptext ufn_test_2 或查 sys.all_sql_modules,定義內容仍為舊名稱 ufn_test_1。

SSMS「重新命名」實際執行 sp_rename,僅更新 sys.objects.name,不更新 sys.sql_modules.definition 中的原始碼文字。編譯後的計畫快取已為新名稱,但元資料定義殘留舊名,導致:
sp_helptext、OBJECT_DEFINITION 顯示舊名。DROP FUNCTION ...; CREATE FUNCTION 新名稱 ...(最乾淨)。sp_rename 同樣不更新 definition,同樣需重建或用「修改」方式。usp_, ufn_),變更需求直接重建。sp_rename 後同步執行 sp_refreshsqlmodule(僅刷新相依物件,不修正 definition),仍建議重建。CREATE OR ALTER(SQL 2016+)或 DROP + CREATE,勿依賴 sp_rename。SELECT OBJECT_ID('dbo.ufn_test_2') AS obj_id, *
FROM sys.all_sql_modules
WHERE [object_id] = OBJECT_ID('dbo.ufn_test_2');
若 definition 含舊名,立即重建。