DB從SQL2K移到2K5,預存程序出問題

風和日麗的下午,我正喝著咖啡,慵懶的享受午後時光(鬼扯)
突然一個MSN訊息打亂了我的思緒
該死的使用者表示
我把DB從A server移到B server之後
原來正常運行的SP,不能執行了。並出現以下訊息
Msg 4121, Level 16, State 1, Procedure spj_79979, Line 7Cannot find either column "dbo" or the user-defined function or aggregate "dbo.ufj_xxx", or the name is ambiguous.
ok,來了個茶包
我對一些奇奇怪怪的英文字,都會覺得好笑
特別是ambiguous (模稜兩可的) 『嗯逼ㄍ一ㄡ噁死』
這個SP[spj_79979]是在A database 然後會select 到 B database的某個function[ufj_xxx]

ALTER procedure [dbo].[spj_79979] ( @Date smalldatetime = '2004/12/13', @From varchar(8) = 'ORZ', @To varchar(8) = 'OGC')asbegin select [dbo].[ufj_xxx] (@Date, @From, @To)end

OK,李組長看了之後不免心生疑惑
要去select不同一個DB的物件,沒加[db name],這樣找得到嗎?
於是我改成這樣

select [DB name].[dbo].[ufj_xxx]

然後,就過了....
那SQL2K為什麼沒問題?

我猜 是2K轉到2K5之後
因為結構改變
如果SP寫得不夠嚴謹
會出現這種的問題

ok,今天又多認識了一個單字

ambiguous 模稜兩可的
我在找解答的時候
底下這個網址給我了靈感
大家可以參考看看
http://forums.asp.net/t/1169916.aspx

留言