SQL Server 2005 引入同義詞物件,允許為現有資料庫物件(資料表、視圖、函數、預存程序等)建立別名。這不僅能縮短程式碼,更能在物件參考之間建立抽象層,大幅降低維護與重構成本。
假設有一張名為 VeryLongTableName_WithComplexPrefix 的資料表,可建立同義詞 TL:
CREATE SYNONYM TL FOR VeryLongTableName_WithComplexPrefix;
之後查詢即可簡寫為:
SELECT * FROM TL;
同義詞真正的威力在於解耦邏輯名稱與物理位置。例如:
SalesHistory 指向本地視圖。SalesData,甚至透過連結伺服器存取遠端伺服器。
DROP SYNONYM SalesHistory; CREATE SYNONYM SalesHistory FOR SalesData.dbo.SalesHistory;(或 LinkedServer.SalesData.dbo.SalesHistory)。情境:Inventory 資料庫中的 SalesHistory 資料表需移至新資料庫 SalesData,但大量現有程式碼參考該表,且專案期限緊迫。
SalesData.dbo.SalesHistory。SalesHistory_Old(保留以驗證遺漏參考)。Inventory 建立同義詞:USE Inventory;
GO
CREATE SYNONYM SalesHistory FOR SalesData.dbo.SalesHistory;
GO
結果:所有對 Inventory..SalesHistory 的查詢、DML 操作自動導向新資料庫,開發時間從「修改所有程式碼」縮減為「建立一個同義詞」。
syn_ 前綴)。