Megosztás:


Szinonimák (adatbázismotor)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

A szinonimák olyan adatbázis-objektumok, amelyek a következő célokat szolgálják:

  • Alternatív nevet ad egy másik adatbázis-objektumnak, más néven alapobjektumnak, amely helyi vagy távoli kiszolgálón is létezhet.

  • Absztrakciós réteget biztosít, amely védi az ügyfélalkalmazást az alapobjektum nevének vagy helyének módosítása ellen.

Vegyük például az Adventure Works Alkalmazott tábláját, amely egy Server1 nevű kiszolgálón található. Ha egy másik kiszolgálóról, a Server2-ről szeretne hivatkozni erre a táblára, az ügyfélalkalmazásnak a Server1.AdventureWorks.Person.Employee négyrészes nevet kell használnia. Ha a tábla helye például egy másik kiszolgálóra módosulna, az ügyfélalkalmazást módosítani kell a változásnak megfelelően.

Mindkét probléma megoldásához létrehozhat egy emptable szinonimát egy dedikált vagy meglévő sémában, a RemoteObjectsben a Server2 kiszolgálón a Server1Alkalmazott táblájához. Az ügyfélalkalmazásnak most már csak a RemoteObjects.EmpTable nevű kétrészes nevet kell használnia az Employee table Server1 hivatkozásához. Ha megváltozik az Alkalmazott tábla helye, szükséges módosítani az EmpTable szinonimát, hogy az Alkalmazott tábla új helyére mutasson. Mivel nincs ALTER SZINONIMÁK utasítás, először el kell dobnia a RemoteObjects.EmpTable szinonimát, majd újra létre kell hoznia a szinonimát ugyanazzal a névvel, de most a szinonimát az Alkalmazott tábla új helyére kell mutatnia.

A szinonimák egy sémához tartoznak, és a séma többi objektumához hasonlóan a szinonimák nevének egyedinek kell lennie. Szinonimákat a következő adatbázis-objektumokhoz hozhat létre:

Szerelvény (CLR) tárolt eljárása

Assembly (CLR) skaláris függvény

Replikációs szűrési eljárás

SQL skaláris függvény

SQL inline táblázatos értékű függvény

View

Szerelvény (CLR) táblaértékes függvény

Assembly (CLR) aggregátumfüggvények

SQL tábla-értékű függvény

SQL tárolt eljárás

Table* (Felhasználó által definiált)

*Helyi és globális ideiglenes táblákat tartalmaz

Megjegyzés:

A függvénybázis-objektumok négyrészes nevei nem támogatottak.

A szinonimák nem lehetnek egy másik szinonima alapobjektumai, és a szinonimák nem hivatkozhatnak felhasználó által definiált összesítő függvényre.

A szinonimák és az alapobjektum közötti kötés csak név alapján történik. Az alapobjektum összes meglétének, típusának és engedélyének ellenőrzése a futtatás időpontjáig halasztódik. Ezért az alapobjektum módosítható, elvethető vagy elvethető, és lecserélhető egy másik, az eredeti alapobjektum nevével megegyező nevű objektumra. Például vegyük a dbo.MyContacts szinonimát, amely az Adventure Works-ben található Person.Contact táblára hivatkozik. Ha a Partner táblát elveti és lecseréli egy Person.Contact nevű nézetre, a MyContacts mostantól a Person.Contact nézetre hivatkozik.

A szinonimákra mutató hivatkozások nem sémához kötöttek. Ezért a szinonimák bármikor elvethetők. A szinonimák elvetésével azonban fennáll annak a kockázata, hogy az elvetett szinonimára mutató hivatkozások maradnak. Ezek a hivatkozások csak futásidőben találhatók.

Szinonimák és sémák

Ha olyan alapértelmezett sémával rendelkezik, amelynek nem a tulajdonosa, és szinonimát szeretne létrehozni, a szinonimát a saját sémájának nevével kell minősítenie. Ha például egy séma S1-et birtokol, de az S2 az alapértelmezett séma, és a CREATE SYNONYM utasítást használja, a szinonima nevét előtaggal kell megadnia a séma S1-re, ahelyett, hogy egyrészes névként nevezné meg. A szinonimák létrehozásáról további információt a SZINONIMÁK LÉTREHOZÁSA (Transact-SQL) című témakörben talál.

Engedélyek megadása szinonimán

Szinonimákra csak a szinonimák tulajdonosai, db_owner tagjai vagy db_ddladmin tagjai adhatnak engedélyt.

A következő engedélyeket szinonimákra alkalmazhatja, akár egészében, akár külön-külön: GRANT, DENY, és REVOKE.

IRÁNYÍTÁS

EXECUTE

SELECT

Frissítés

töröl

INSERT

VEGYÉK ÁT A TULAJDONJOGOT

NÉZETDEFINÍCIÓ

Szinonimák használata

A szinonimákat a hivatkozott alapobjektum helyett több SQL-utasításban és kifejezéskörnyezetben is használhatja. Az alábbi oszlopok a következő utasítások és kifejezéskörnyezetek listáját tartalmazzák:

SELECT

Frissítés

EXECUTE

INSERT

töröl

Alválasztások

Ha szinonimával dolgozik a korábban megadott környezetekben, az alapobjektumra is hatással lesz. Ha például egy szinonima egy tábla alapobjektumára hivatkozik, és beszúr egy sort a szinonimába, akkor valójában egy sort szúr be a hivatkozott táblába.

Megjegyzés:

Csatolt kiszolgálón található szinonimára nem hivatkozhat.

Szinonimát használhat a OBJECT_ID függvény paramétereként; a függvény azonban a szinonima objektumazonosítóját adja vissza, nem az alapobjektumot.

DDL-utasításban nem hivatkozhat szinonimára. Például a következő utasítások, amelyek egy nevesített dbo.MyProductszinonimára hivatkoznak, hibákat generálnak:

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

A következő engedélykivonatok csak a szinonimához vannak társítva, nem pedig az alapobjektumhoz:

GRANT

REVOKE

DENY

A szinonimák nem sémához kötöttek, ezért a következő sémaalapú kifejezéskörnyezetek nem hivatkozhatnak magára:

CHECK-korlátozások

Alapértelmezett kifejezések

Sémaalapú nézetek

Számított oszlopok

Szabálykifejezések

Sémához kötött függvények

A sémafüggvényekről további információt a felhasználó által definiált függvények (adatbázismotor) létrehozása című témakörben talál.

Információk lekérése a szinonimákról

A sys.synonyms katalógusnézet egy adott adatbázis szinonimáihoz tartalmaz bejegyzést. Ez a katalógusnézet szinonima metaadatokat jelenít meg, például a szinonimák nevét és az alapobjektum nevét. További információ: sys.szinonimák (Transact-SQL).

Kiterjesztett tulajdonságok használatával leíró vagy oktatószöveget, beviteli maszkokat és formázási szabályokat adhat hozzá szinonimák tulajdonságaiként. Mivel a tulajdonság az adatbázisban van tárolva, a tulajdonságot olvasó összes alkalmazás ugyanúgy értékelheti ki az objektumot. További információ: sp_addextendedproperty (Transact-SQL).

A szinonima alapobjektumának alaptípusának megkereséséhez használja az OBJECTPROPERTYEX függvényt. További információ: OBJECTPROPERTYEX (Transact-SQL).

Példák

Az alábbi példa egy szinonima alapobjektumának alaptípusát adja vissza, amely egy helyi objektum.

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;  

Az alábbi példa egy szinonima alapobjektumának alaptípusát adja vissza, amely egy távoli objektum, amely egy nevesített Server1kiszolgálón található.

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

Szinonimák létrehozása
SZINONIMÁK LÉTREHOZÁSA (Transact-SQL)
DROP SZINONIMÁK (Transact-SQL)