Sdílet prostřednictvím


Synonyma (databázový modul)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Synonymum je databázový objekt, který slouží k následujícím účelům:

  • Poskytuje alternativní název jiného databázového objektu, který se označuje jako základní objekt, který může existovat na místním nebo vzdáleném serveru.

  • Poskytuje vrstvu abstrakce, která chrání klientskou aplikaci před změnami provedenými v názvu nebo umístění základního objektu.

Představte si například tabulku Employee společnosti Adventure Works umístěnou na serveru s názvem Server1. Pro odkaz na tuto tabulku z jiného serveru Server2 by klientská aplikace musela použít čtyřdílný název Server1.AdventureWorks.Person.Employee. Pokud by se například umístění tabulky změnilo na jiný server, musí být klientská aplikace upravena tak, aby odrážela danou změnu.

Pokud chcete vyřešit oba tyto problémy, můžete vytvořit synonymum EmpTable ve vyhrazeném nebo existujícím schématu RemoteObjects na serveru 2 pro tabulku Employee na Serveru1. Klientská aplikace teď musí použít pouze název dvoudílné části RemoteObjects.EmpTable, aby odkazovala na tabulku Employee Server1. Pokud se změní umístění tabulky Zaměstnanec , budete muset změnit synonymum EmpTable, aby odkazovaly na nové umístění tabulky Zaměstnanec . Protože neexistuje žádný příkaz ALTER SYNONYM, musíte nejprve vynechat synonymum RemoteObjects.EmpTable a pak znovu vytvořit synonymum se stejným názvem, ale teď nasměrovat synonymum na nové umístění tabulky Employee .

Synonymum patří do schématu a stejně jako jiné objekty ve schématu musí být název synonyma jedinečný. Můžete vytvořit synonyma pro následující databázové objekty:

Uložená procedura sestavení (CLR)

Skalární funkce sestavení (CLR)

Postup filtrování replikace

Skalární funkce SQL

Funkce SQL vracející tabulku v řádku

Zobrazit

Funkce s hodnotami tabulky sestavení (CLR)

Agregační funkce sestavení (CLR)

Funkce SQL vracející tabulku

Uložená procedura SQL

Tabulka* (definovaná uživatelem)

*Zahrnuje místní a globální dočasné tabulky.

Poznámka:

Názvy čtyř částí pro základní objekty funkce nejsou podporovány.

Synonymum nemůže být základním objektem pro jiné synonymum a synonymum nemůže odkazovat na uživatelem definovanou agregační funkci.

Vazba mezi synonymem a základním objektem je pouze podle názvu. Veškerá kontrola existence, typu a oprávnění základního objektu je odložena do doby běhu. Základní objekt lze proto upravit, vynechat nebo vynechat a nahradit jiným objektem, který má stejný název jako původní základní objekt. Představte si například synonymum dbo. MyContacts, která odkazuje na tabulku Person.Contact v Adventure Works. Pokud se tabulka Kontakt zahodí a nahradí zobrazením s názvem Person.Contact, myContacts teď odkazuje na zobrazení Person.Contact .

Odkazy na synonyma nejsou vázané na schéma. Proto je možné synonymum kdykoliv vynechat. Nicméně vynecháním synonyma riskujete, že necháte neplatné odkazy na vynechané synonymum. Tyto odkazy budou nalezeny pouze za běhu programu.

Synonyma a schémata

Pokud máte výchozí schéma, které nevlastníte a chcete vytvořit synonymum, musíte kvalifikovat název synonyma názvem schématu, které vlastníte. Pokud například vlastníte schéma S1, ale S2 je výchozím schématem a použijete příkaz CREATE SYNONYM, musíte předponu názvu synonyma se schématem S1 místo pojmenování synonyma použít název jednodílného názvu. Další informace o vytváření synonym naleznete v tématu CREATE SYNONYM (Transact-SQL).

Udělení oprávnění ke synonymu

Oprávnění ke synonymu můžou udělit jenom vlastníci synonym, členové db_owner nebo členové db_ddladmin .

Ke synonymu můžete GRANT, DENY nebo REVOKE všechna či některá z následujících oprávnění:

ŘÍZENÍ

EXECUTE

SELECT

Aktualizace

DELETE

INSERT

PŘEVEZMĚTE ODPOVĚDNOST

ZOBRAZIT DEFINICI

Použití synonym

Synonyma můžete použít místo odkazovaného základního objektu v několika příkazech SQL a kontextech výrazů. Následující sloupce obsahují seznam těchto příkazů a kontextů výrazů:

SELECT

Aktualizace

EXECUTE

INSERT

DELETE

Dílčí výběry

Při práci se synonymy v dříve uvedených kontextech je ovlivněn základní objekt. Pokud například synonymum odkazuje na základní objekt, který je tabulka a vložíte řádek do synonyma, ve skutečnosti vkládáte řádek do odkazované tabulky.

Poznámka:

Nemůžete odkazovat na synonymum umístěné na propojeném serveru.

Jako parametr funkce OBJECT_ID můžete použít synonymum; funkce však vrátí ID objektu synonyma, nikoli základní objekt.

V příkazu DDL nelze odkazovat na synonymum. Například následující příkazy, které odkazují na synonymum s názvem dbo.MyProduct, generují chyby:

ALTER TABLE dbo.MyProduct  
   ADD NewFlag int null;  
EXEC ('ALTER TABLE dbo.MyProduct  
   ADD NewFlag int null');  

Následující příkazy oprávnění jsou přidruženy pouze ke synonymu, nikoli k základnímu objektu:

GRANT

REVOKE

DENY

Synonyma nejsou svázaná se schématem, a proto na tato kontexty výrazu vázaného schématem nelze odkazovat:

Omezení CHECK

Výchozí výrazy

Zobrazení svázaná se schématem

Počítané sloupce

Výrazy pravidel

Funkce vázané na schéma

Další informace o funkcích vázaných schématem najdete v tématu Vytvoření uživatelem definovaných funkcí (databázový stroj).

Získání informací o synonymech

Zobrazení sys.synonyms katalogu obsahuje položku pro každé synonymum v dané databázi. Toto zobrazení katalogu zveřejňuje metadata synonym, jako je název synonyma a název základního objektu. Další informace naleznete v tématu sys.synonyms (Transact-SQL).

Pomocí rozšířených vlastností můžete jako vlastnosti synonyma přidat popisný nebo instrukční text, vstupní masky a pravidla formátování. Vzhledem k tomu, že vlastnost je uložena v databázi, mohou všechny aplikace, které tuto vlastnost čtou, vyhodnotit objekt stejným způsobem. Další informace najdete v tématu sp_addextendedproperty (Transact-SQL).

K vyhledání základního typu základního objektu synonyma použijte funkci OBJECTPROPERTYEX. Další informace naleznete v tématu OBJECTPROPERTYEX (Transact-SQL).

Examples

Následující příklad vrátí základní typ základního objektu synonyma, který je místním objektem.

USE tempdb;  
GO
CREATE SCHEMA SynSchema
GO  
CREATE SYNONYM SynSchema.MyEmployee   
FOR AdventureWorks2022.HumanResources.Employee;  
GO  
SELECT OBJECTPROPERTYEX(OBJECT_ID('SynSchema.MyEmployee'), 'BaseType') AS BaseType;  

Následující příklad vrátí základní typ základního objektu synonyma, který je vzdáleným objektem umístěným na serveru s názvem Server1.

EXECUTE sp_addlinkedserver Server1;  
GO  
CREATE SYNONYM SynSchema.MyRemoteEmployee  
FOR Server1.AdventureWorks2022.HumanResources.Employee;  
GO  
SELECT OBJECTPROPERTYEX(OBJECT_ID('MyRemoteEmployee'), 'BaseType') AS BaseType;  
GO  

Vytváření synonym
CREATE SYNONYM (Transact-SQL)
DROP SYNONYM (Transact-SQL)