Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL 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
Související obsah
Vytváření synonym
CREATE SYNONYM (Transact-SQL)
DROP SYNONYM (Transact-SQL)