2010-12-13 100 views
0

我正在使用sql server 2008 rc2和我有一個關於標量值函數命名約定的問題。具體有以下代碼工作正常選擇標量值udf sql服務器

select from database.dbo.MyUDF('arg') 

但是當我擺脫了DBO和嘗試:

select from database..MyUDF('arg') 

我得到一個語法錯誤,說這是不明確的。我從來沒有在表名,視圖,存儲過程或表值函數的名稱中使用dbo,我永遠不會遇到這個問題。

爲什麼我得到這個問題的標量udf?

+3

因爲.....這就是團隊設計SQL Server的方式....抱歉,沒有明確的理由 - 就是這樣,而且一直是這樣,而不是 - 你不能改變它 - 只是習慣它並使用它......實際上,它被認爲是一個最好的做法**總是**使用'dbo.'符號 - 所以也許是時候你開始使用它,爲所有的對象。 – 2010-12-13 19:56:16

+1

如果您不使用dbo符號,那麼這意味着您正在使用系統管理員權限。否則,你最終會與[域\用戶] .Mytable例如在CREATE。 **糟糕的做法**。在運行時,它會在查看dbo =較慢的性能之前嘗試解析用戶的模式。 – gbn 2010-12-13 20:08:25

回答

0

第一:

如果你不使用DBO符號,那麼就意味着你與系統管理員權限的工作。否則,你最終會與[域\用戶] .Mytable例如在CREATE。 不良做法。在運行時,它會在查看dbo =較慢的性能之前嘗試解析用戶的模式。

二:

嘗試使用SYNONYMS

CREATE SYNONYM MyUDF FOR dbo.MyUDF 

注意,別名可能需要明確的權限(但聽起來就像你使用SA或DBO反正)我還沒有與數據庫中使用它們前綴所以YMMV