Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-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
Kapcsolódó tartalom
Szinonimák létrehozása
SZINONIMÁK LÉTREHOZÁSA (Transact-SQL)
DROP SZINONIMÁK (Transact-SQL)