Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza 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
Powiązana zawartość
Tworzenie synonimów
CREATE SYNONIM (Transact-SQL)
DROP SYNONIM (Transact-SQL)