共用方式為


了解同義字

同義字是具有下列用途的資料庫物件:

  • 對在本機或遠端伺服器上的另一個資料庫物件 (稱為基底物件) 提供別名。

  • 提供抽象層來保護用戶端應用程式,避免變更基底物件的名稱或位置。

例如,以位於伺服器 Server1 上 AdventureWorks2008R2 範例資料庫的 Employee 資料表為例。若要從另一個伺服器 Server2 參考此資料表,用戶端應用程式使用的名稱必須包含四個部分:Server1.AdventureWorks.HumanResources.Employee。另外,若是資料表的位置已變更 (例如,變更至另一個伺服器),則必須修改用戶端應用程式以反映該變更。

若要解決這些問題,您可以在 Server2 建立同義字 EmpTable,來代表在 Server1 的 Employee 資料表。現在,用戶端應用程式只需要使用單一部份的名稱 EmpTable 來參考 Employee 資料表。此外,如果 Employee 資料表的位置變更,您必須修改同義字 EmpTable,指向 Employee 資料表的新位置。因為沒有 ALTER SYNONYM 陳述式,首先您必須卸除同義字 EmpTable,再以相同的名稱重新建立同義字,但要將同義字指向Employee 的新位置。

同義字放在結構描述中,如同結構描述中的其他物件一樣,同義字的名稱也必須是唯一的。您可以為下列資料庫物件建立同義字:

組件 (CLR) 預存程序

組件 (CLR) 資料表值函式

組件 (CLR) 純量函數

組件 (CLR) 彙總函式

複寫篩選程序

擴充預存程序

SQL 純量函數

SQL 資料表值函式

SQL 內嵌資料表值函式

SQL 預存程序

檢視

資料表1 (使用者自訂)

1 包含本機和全域暫存資料表

[!附註]

不支援函數基底物件的四部份名稱。

同義字不可為另一個同義字的基底物件,而且同義字不可以參考使用者自訂的彙總函式。

同義字和基底物件之間只透過名稱繫結。基底物件的存在性、類型及權限,全部會延遲到執行階段再檢查。因此,和原始基底物件名稱相同的另一個物件,可以修改、卸除或卸除並取代基底物件。例如,以同義字 MyContacts 為例,此同義字參考 Adventure Works 中的 Person.Person 資料表。如果 Person 資料表被卸除並由名稱為 Person.Person 的檢視所取代,則 MyContacts 會變成參考 Person.Person 檢視。

同義字的參考不受結構描述的約束。因此,隨時可以卸除同義字。不過,如果卸除同義字,已卸除的同義字有可能會留下懸吊參考。只有等到執行階段才會發現這種參考。

同義字和結構描述

如果預設的結構描述不是由您擁有,但您想要建立同義字,則必須使用您擁有的結構描述名稱來限定同義字名稱。例如,如果您擁有結構描述 x,但預設結構描述是 y,且您使用 CREATE SYNONYM 陳述式,則必須以結構描述 x 做為同義字名稱的前置詞,而非使用單一部分的名稱來命名同義字。如需如何建立同義字的詳細資訊,請參閱<CREATE SYNONYM (Transact-SQL)>。

授與同義字的權限

只有同義字擁有者、db_owner 的成員或 db_ddladmin 的成員,才可授與同義字的權限。

您可以 GRANT、DENY、REVOKE 同義字上的任何或所有下列權限:

CONTROL

DELETE

EXECUTE

INSERT

SELECT

TAKE OWNERSHIP

UPDATE

VIEW DEFINITION