Udostępnij przez


Synonimy (aparat bazy danych)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Synonimem jest obiekt bazy danych, który służy do następujących celów:

  • Udostępnia alternatywną nazwę innego obiektu bazy danych, określanego jako obiekt podstawowy, który może istnieć na serwerze lokalnym lub zdalnym.

  • Zapewnia warstwę abstrakcji, która chroni aplikację kliencką przed zmianami wprowadzonych w nazwie lub lokalizacji obiektu podstawowego.

Rozważmy na przykład tabelę Employee (Pracownik ) firmy Adventure Works znajdującą się na serwerze o nazwie Server1. Aby odwołać się do tej tabeli z innego serwera Server2, aplikacja kliencka musi użyć czteroczęściowej nazwy Server1.AdventureWorks.Person.Employee. Ponadto jeśli lokalizacja tabeli miała zostać zmieniona, na przykład na inny serwer, aplikacja kliencka musiałaby zostać zmodyfikowana w celu odzwierciedlenia tej zmiany.

Aby rozwiązać oba te problemy, możesz utworzyć synonim EmpTable w dedykowanym lub istniejącym schemacie RemoteObjects na serwerze Server2 dla tabeli Employee na serwerze Server1. Teraz aplikacja kliencka musi używać tylko dwuczęściowej nazwy RemoteObjects.EmpTable, aby odwołać się do tabeli Employee Server1. Ponadto jeśli lokalizacja tabeli Employee zmieni się, musisz zmodyfikować synonim EmpTable, aby wskazać nową lokalizację tabeli Employee . Ponieważ nie ma instrukcji ALTER SYNONYM, najpierw należy usunąć synonim RemoteObjects.EmpTable, a następnie ponownie utworzyć synonim o tej samej nazwie, wskazując go na nową lokalizację tabeli Employee.

Synonim należy do schematu i podobnie jak inne obiekty w schemacie, nazwa synonimu musi być unikatowa. Synonimy dla następujących obiektów bazy danych można utworzyć:

Procedura składowana zestawu (CLR)

Funkcja skalarna zestawu (CLR)

Procedura filtrowania replikacji

Funkcja skalarna SQL

Funkcja SQL zwracająca tabelę wierszową

View

Funkcja table-valued zestawu (CLR)

Funkcje agregujące zestawu (CLR)

Funkcja zwracana przez tabelę SQL

Procedura składowana SQL

Tabela* (zdefiniowana przez użytkownika)

*Obejmuje lokalne i globalne tabele tymczasowe

Uwaga / Notatka

Nazwy czterech części obiektów podstawowych funkcji nie są obsługiwane.

Synonimem nie może być obiekt podstawowy dla innego synonimu, a synonim nie może odwoływać się do funkcji agregującej zdefiniowanej przez użytkownika.

Powiązanie między synonimem a jego obiektem podstawowym jest tylko według nazwy. Sprawdzanie istnienia, typu i uprawnień obiektu bazowego jest odłożone do czasu wykonywania. W związku z tym obiekt podstawowy może zostać zmodyfikowany, porzucony lub porzucony i zastąpiony przez inny obiekt o takiej samej nazwie jak oryginalny obiekt podstawowy. Rozważmy na przykład synonim dbo. MyContacts odwołujące się do tabeli Person.Contact w firmie Adventure Works. Jeśli tabela Contact została porzucona i zamieniona przez widok o nazwie Person.Contact, funkcja MyContacts odwołuje się teraz do widoku Person.Contact .

Odwołania do synonimów nie są powiązane ze schematem. W związku z tym synonim można porzucić w dowolnym momencie. Jednak porzucając synonim, ryzykujesz pozostawienie zwisających odwołań do synonimu, który został porzucony. Te odwołania będą znajdowane tylko w czasie wykonywania.

Synonimy i schematy

Jeśli masz domyślny schemat, którego nie jesteś właścicielem i chcesz utworzyć synonim, musisz zakwalifikować nazwę synonimu z nazwą schematu, którego jesteś właścicielem. Jeśli na przykład jesteś właścicielem schematu S1, ale S2 jest domyślnym schematem i używasz instrukcji CREATE SYNONYM, musisz prefiks nazwy synonimu ze schematem S1, zamiast nazewnictwa synonimu przy użyciu nazwy pojedynczej części. Aby uzyskać więcej informacji na temat tworzenia synonimów, zobacz CREATE SYNONYM (Transact-SQL).

Udzielanie uprawnień do synonimu

Tylko właściciele synonimów, członkowie db_owner lub członkowie db_ddladmin mogą udzielić uprawnień do synonimu.

Możesz GRANT, DENY i REVOKE wszystkie lub dowolne z następujących uprawnień na synonimie:

KONTROLA

EXECUTE

SELECT

Aktualizacja

USUŃ

INSERT

PRZEJMIJ ODPOWIEDZIALNOŚĆ

DEFINICJA WIDOKU

Używanie synonimów

Synonimy można używać zamiast ich przywoływanego obiektu podstawowego w kilku instrukcjach SQL i kontekstach wyrażeń. Następujące kolumny zawierają listę tych instrukcji i kontekstów wyrażeń:

SELECT

Aktualizacja

EXECUTE

INSERT

USUŃ

Wybór podrzędny

Podczas pracy z synonimami w poprzednich kontekstach występuje problem z obiektem podstawowym. Jeśli na przykład synonim odnosi się do obiektu bazowego, który jest tabelą, i wstawiasz wiersz do synonimu, to faktycznie wstawiasz wiersz do tabeli, na którą ten synonim wskazuje.

Uwaga / Notatka

Nie można odwołać się do synonimu znajdującego się na połączonym serwerze.

Jako parametr funkcji OBJECT_ID można użyć synonimu; jednak funkcja zwraca identyfikator obiektu synonimu, a nie obiektu podstawowego.

Nie można odwołać się do synonimu w instrukcji DDL. Na przykład następujące instrukcje, które odwołują się do synonimu o nazwie dbo.MyProduct, generują błędy:

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

Następujące instrukcje uprawnień są skojarzone tylko z synonimem, a nie z obiektem podstawowym:

GRANT

REVOKE

DENY

Synonimy nie są powiązane ze schematem i dlatego nie można odwoływać się do następujących kontekstów wyrażeń powiązanych ze schematem:

SPRAWDZANIE ograniczeń

Wyrażenia domyślne

Widoki powiązane ze schematem

Obliczone kolumny

Wyrażenia zasad

Funkcje powiązane ze schematem

Aby uzyskać więcej informacji na temat funkcji powiązanych ze schematem, zobacz Tworzenie funkcji zdefiniowanych przez użytkownika (aparat bazy danych).

Uzyskiwanie informacji o synonimach

sys.synonyms Widok wykazu zawiera wpis dla każdego synonimu w danej bazie danych. Ten widok wykazu uwidacznia metadane synonimów, takie jak nazwa synonimu i nazwa obiektu podstawowego. Aby uzyskać więcej informacji, zobacz sys.synonyms (Transact-SQL).

Za pomocą właściwości rozszerzonych można dodawać tekst opisowy lub instruktażowy, maski wejściowe i reguły formatowania jako właściwości synonimu. Ponieważ właściwość jest przechowywana w bazie danych, wszystkie aplikacje odczytujące właściwość mogą ocenić obiekt w taki sam sposób. Aby uzyskać więcej informacji, zobacz sp_addextendedproperty (Transact-SQL).

Aby znaleźć podstawowy typ obiektu podstawowego synonimu, użyj funkcji OBJECTPROPERTYEX. Aby uzyskać więcej informacji, zobacz OBJECTPROPERTYEX (Transact-SQL).

Przykłady

Poniższy przykład zwraca podstawowy typ obiektu podstawowego synonimu, który jest obiektem lokalnym.

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;  

Poniższy przykład zwraca podstawowy typ obiektu podstawowego synonimu, który jest obiektem zdalnym znajdującym się na serwerze o nazwie 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  

Tworzenie synonimów
CREATE SYNONIM (Transact-SQL)
DROP SYNONIM (Transact-SQL)