2010-09-22 21 views
0

我目前正在對應用程序進行一些維護,並且遇到了有關tsql中限定名稱的大問題。我想知道是否有人能爲我解決我的困惑。合格的命名

根據我的理解,您希望使用USE [DatabaseName]來聲明您正在使用哪個數據庫。我注意到如果你「重命名」數據庫,它會自動更新你的代碼中的這些引用。

但是,最初編寫此代碼的開發人員使用了USE [DatabaseName]。然後在後來的發言中他寫道:SELECT * FROM [DatabaseName].[dbo].[Table]。好吧,如果我更改數據庫的名稱,這顯然會中斷。從我讀過的你想要限定的名字只有所有者,如:[dbo].[TableName],所以它知道在哪裏尋找提高性能。

他是否有理由在每個語句中包含數據庫名稱?

回答

1

從我讀到的你想要限定名稱只有所有者,如:[dbo]。[TableName],所以它知道在哪裏看,這會提高性能。

不是我所知道的,而是它看起來像某人是懶惰的。
我總是使用三種名稱格式(除非訪問鏈接的服務器實例,那麼它是四個)。

好處是,將使用正確的數據庫&架構中的正確表格,而不用擔心錯誤的USE [appropriate database]聲明。只要對象存在,並且權限根據需要有效,就可以在其他數據庫中重新創建存儲過程,函數,視圖等,而無需每次都訪問USE [appropriate database]語句。

但我正在處理同一實例上的大量數據庫上的數據。我不一定是這樣設計的,但它不會改變我使用三(或四)部分限定名稱格式。

+0

那麼你是否會創造同義詞?因爲如果我使用3或4部分限定符,然後重命名數據庫,則必須經過並修復所有的命名。我只是這麼說,因爲當我重新命名數據庫時,它會自動更正「USE」語句,但沒有更新任何內聯命名。 – MisterIsaak 2010-09-23 16:07:05

+0

@Jisaak:不,在SQL Server上沒有使用同義詞。更新數據庫名稱很簡單 - SSMS的查找(Ctrl-F)具有查找和替換功能,例如全局替換。 – 2010-09-23 16:12:14

+0

嗯。好吧,100個sprocs仍然看起來很痛苦。謝謝您的幫助。 – MisterIsaak 2010-09-23 16:25:35