Sql-Server

Sql server - 需要來自另一個數據庫的表時的完全限定或同義詞

  • June 23, 2022

場景:在 sql server on prem 併計劃在一兩年內上雲。

我正在數據庫 A 中編寫一個儲存過程,我需要從數據庫 B 訪問一個表

在數據庫中創建指向數據庫 B 中的表的同義詞還是完全限定包中的表是最佳實踐。想法?

我發現有幾種類型的對象使 SQL Server 中的調試和/或管理變得更加困難,主要是因為大多數開發人員最終會重新考慮它們。其中之一是觸發器,另一個是同義詞。

我相信 Synonyms 的原因是:

  1. 同義詞並不常用,許多開發人員甚至不知道它們的存在。
  2. 作為查詢的一部分,同義詞通常看起來(和功能)像一個正常實體對象,當其他開發人員遇到同義詞時可能會感到困惑。當他們試圖追溯同義詞對象所在的位置時,他們可能需要一段時間才能意識到它是同義詞,而不是像表或視圖這樣的實體對象。我想說,對於那些不利用模式並將所有內容都保存在dbo.

相反,同義詞在理論上是好的,特別是對於抽像出定義它們的對象引用的案例。這樣如果在很多地方都引用了這樣的對象,並且有一天需要更改,那麼您只需要更新同義詞定義。這只是對一個對象的更改,而不是必須修復所有依賴項中的引用。所以可以說同義詞也可以提高數據庫的可管理性。

此外,與同義詞有一個命名約定可以幫助開發人員在他們第一次遇到它時意識到它是同義詞,例如在所有同義詞前加上小寫字母s


至於您是否應該為您的案例使用一個,取決於您是否認為同義詞的上述良好屬性超過了潛在的壞屬性。這裡沒有真正的正確或錯誤答案,由您決定。

如果可能,請使用連接字元串,然後使用架構和表名。

引用自:https://dba.stackexchange.com/questions/313679