Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Analytics-végpont a Microsoft Fabric
Warehouse-ban a Microsoft Fabric
Egy sort tartalmaz az aktuális adatbázisban lévő, felhasználó által definiált entitás minden egyes névfüggőségéhez. Ez magában foglalja a natívan lefordított, a skaláris felhasználó által definiált függvények és más SQL Server-modulok közötti függőségeket. Két entitás közötti függőség akkor jön létre, ha az egyik entitás, az úgynevezett hivatkozott entitás, név szerint jelenik meg egy másik entitás egy megőrzött SQL-kifejezésében, az úgynevezett hivatkozó entitás. Ha például egy tábla egy nézet definíciójában szerepel, a nézet hivatkozási entitásként a táblától, a hivatkozott entitástól függ. Ha a tábla el van dobva, a nézet használhatatlan.
További információ: Skaláris User-Defined Functions for In-Memory OLTP.
Ez a katalógusnézet a következő entitások függőségi adatainak jelentésére használható:
Sémaalapú entitások.
Nem sémaalapú entitások.
Adatbázisközi és kiszolgálóközi entitások. Az entitásnevek jelentése; az entitásazonosítók azonban nem oldódnak fel.
Oszlopszintű függőségek sémaalapú entitásokon. A nem sémához kötött objektumok oszlopszintű függőségei sys.dm_sql_referenced_entitieshasználatával adhatóak vissza.
A kiszolgálószintű DDL a főadatbázis kontextusában aktiválódik.
| Oszlop neve | Adattípus | Leírás |
|---|---|---|
| referencing_id | A hivatkozó entitás azonosítója. Nem null értékű. | |
| referencing_minor_id | Oszlopazonosító, ha a hivatkozási entitás oszlop; egyéb esetben 0. Nem null értékű. | |
| referencing_class | apró | A hivatkozó entitás osztálya. 1 = Objektum vagy oszlop 12 = Adatbázis DDL-eseményindítója 13 = kiszolgálói DDL-eseményindító Nem null értékű. |
| referencing_class_desc | nvarchar(60) | A hivatkozási entitás osztályának leírása. OBJECT_OR_COLUMN DATABASE_DDL_TRIGGER SERVER_DDL_TRIGGER Nem null értékű. |
| is_schema_bound_reference | bit | 1 = A hivatkozott entitás sémakötésű. 0 = A hivatkozott entitás nem sémaalapú. Nem null értékű. |
| referenced_class | apró | A hivatkozott entitás osztálya. 1 = Objektum vagy oszlop 6 = Típus 10 = XML-sémagyűjtemény 21 = Partíció függvény Nem null értékű. |
| referenced_class_desc | nvarchar(60) | A hivatkozott entitás osztályának leírása. OBJECT_OR_COLUMN TÍPUS XML_SCHEMA_COLLECTION PARTITION_FUNCTION Nem null értékű. |
| referenced_server_name | sysname | A hivatkozott entitás kiszolgálójának neve. Ez az oszlop egy érvényes négyrészes név megadásával ki van töltve a kiszolgálóközi függőségek esetében. A többrészes nevekről további információt Transact-SQL szintaxiskonvenciák. NULL érték olyan nem sémaalapú entitásokhoz, amelyekre az entitás négyrészes név megadása nélkül hivatkozik. NULL érték a sémaalapú entitások esetében, mert ugyanabban az adatbázisban kell lenniük, ezért csak kétrészes (schema.object) névvel definiálhatók. |
| referenced_database_name | sysname | A hivatkozott entitás adatbázisának neve. Ez az oszlop adatbázisközi vagy kiszolgálóközi hivatkozásokhoz van feltöltve, amelyek egy érvényes háromrészes vagy négyrészes név megadásával jönnek létre. NULL érték a nem sémaalapú hivatkozásokhoz, ha egy- vagy kétrészes névvel van megadva. NULL érték a sémaalapú entitások esetében, mert ugyanabban az adatbázisban kell lenniük, ezért csak kétrészes (schema.object) névvel definiálhatók. |
| referenced_schema_name | sysname | Séma, amelyhez a hivatkozott entitás tartozik. NULL érték azokhoz a nem sémaalapú hivatkozásokhoz, amelyekben az entitásra a sémanév megadása nélkül hivatkoztak. Sémakötésű hivatkozásokhoz soha ne legyen NULL, mert a sémahoz kötött entitásokat kétrészes névvel kell definiálni és hivatkozni. |
| referenced_entity_name | sysname | A hivatkozott entitás neve. Nem null értékű. |
| referenced_id | A hivatkozott entitás azonosítója. Ennek az oszlopnak az értéke soha nem NULL a sémához kötött hivatkozások esetében. Ennek az oszlopnak az értéke mindig NULL a többkiszolgálós és adatbázisközi hivatkozások esetében. NULL érték az adatbázison belüli hivatkozásokhoz, ha az azonosító nem határozható meg. Nem sémaalapú hivatkozások esetén az azonosító nem oldható fel a következő esetekben: A hivatkozott entitás nem létezik az adatbázisban. A hivatkozott entitás sémája a hívó sémájától függ, és futásidőben lesz feloldva. Ebben az esetben a is_caller_dependent értéke 1. |
|
| referenced_minor_id | A hivatkozott oszlop azonosítója, ha a hivatkozási entitás oszlop; egyéb esetben 0. Nem null értékű. A hivatkozott entitás olyan oszlop, amely egy oszlopot név alapján azonosít a hivatkozási entitásban, vagy ha a szülő entitást egy SELECT * utasításban használja a rendszer. |
|
| is_caller_dependent | bit | Azt jelzi, hogy a hivatkozott entitás sémakötése futásidőben történik; Ezért az entitásazonosító feloldása a hívó sémájától függ. Ez akkor fordul elő, ha a hivatkozott entitás egy tárolt eljárás, egy kiterjesztett tárolt eljárás vagy egy nem sémaalapú, felhasználó által definiált függvény, amelyet egy EXECUTE utasítás hív meg. 1 = A hivatkozott entitás hívófüggő, és futásidőben lesz feloldva. Ebben az esetben a referenced_id NULL értékű. 0 = A hivatkozott entitásazonosító nem hívófüggő. Mindig 0 a sémaalapú hivatkozásokhoz, valamint az adatbázisközi és kiszolgálóközi hivatkozásokhoz, amelyek explicit módon megadják a séma nevét. Például egy EXEC MyDatabase.MySchema.MyProc formátumú entitásra mutató hivatkozás nem hívófüggő. A EXEC MyDatabase..MyProc formátumú hivatkozás azonban hívófüggő. |
| is_ambiguous | bit | Azt jelzi, hogy a hivatkozás nem egyértelmű, és futtatáskor feloldható felhasználó által definiált függvényre, felhasználó által definiált típusra (UDT) vagy xquery-hivatkozásra egy xmltípusú oszlopra. Tegyük fel például, hogy a SELECT Sales.GetOrder() FROM Sales.MySales utasítás egy tárolt eljárásban van definiálva. A tárolt eljárás végrehajtásáig nem lehet tudni, hogy a Sales.GetOrder() felhasználó által definiált függvény-e a Sales UDT típusú Sales nevű sémában vagy oszlopban GetOrder()nevű metódussal.1 = A hivatkozás nem egyértelmű. 0 = A hivatkozás nem egyértelmű, vagy az entitás sikeresen megköthető a nézet meghívásakor. Mindig 0 a séma által kötött hivatkozásokhoz. |
Megjegyzések
Az alábbi táblázat azokat az entitástípusokat sorolja fel, amelyekhez függőségi információkat hoz létre és tart fenn. A függőségi adatok nincsenek létrehozva vagy karbantartva szabályokhoz, alapértelmezett értékekhez, ideiglenes táblákhoz, ideiglenes tárolt eljárásokhoz vagy rendszerobjektumokhoz.
Jegyzet
Az Azure Synapse Analytics és a párhuzamos adattárház a listából támogatja a táblákat, nézeteket, szűrt statisztikákat és Transact-SQL tárolt eljárások entitástípusait. A függőségi adatok csak táblákhoz, nézetekhez és szűrt statisztikákhoz jönnek létre és tarthatók fenn.
| Entitás típusa | Hivatkozási entitás | Hivatkozott entitás |
|---|---|---|
| Asztal | Igen* | Igen |
| Nézet | Igen | Igen |
| Szűrt index | Igen** | Nem |
| Szűrt statisztikák | Igen** | Nem |
| Transact-SQL tárolt eljárás*** | Igen | Igen |
| CLR tárolt eljárás | Nem | Igen |
| Transact-SQL felhasználó által definiált függvény | Igen | Igen |
| CLR felhasználó által definiált függvény | Nem | Igen |
| CLR-eseményindító (DML és DDL) | Nem | Nem |
| Transact-SQL DML-eseményindító | Igen | Nem |
| adatbázisszintű DDL-eseményindító Transact-SQL | Igen | Nem |
| Transact-SQL kiszolgálószintű DDL-eseményindító | Igen | Nem |
| Kiterjesztett tárolt eljárások | Nem | Igen |
| Sor | Nem | Igen |
| Szinonima | Nem | Igen |
| Típus (alias és CLR felhasználó által definiált típus) | Nem | Igen |
| XML-sémagyűjtemény | Nem | Igen |
| Partíciófüggvény | Nem | Igen |
* A tábla csak akkor lesz hivatkozási entitásként nyomon követve, ha Transact-SQL modulra, felhasználó által definiált típusra vagy XML-sémagyűjteményre hivatkozik a számított oszlop, a CHECK vagy a DEFAULT korlátozás definíciójában.
** A szűrő predikátumában használt minden oszlop hivatkozási entitásként van nyomon követve.
Az 1-nél nagyobb egész számmal rendelkező számozott tárolt eljárásokat a rendszer nem hivatkozó vagy hivatkozott entitásként követi nyomon.
Engedélyek
A VIEW DEFINITION engedélyre van szükség az adatbázison, és SELECT engedélyt kell kérni az adatbázis sys.sql_expression_dependencies szolgáltatásához. Alapértelmezés szerint a SELECT engedély csak a db_owner rögzített adatbázis-szerepkör tagjai számára van megadva. Ha a SELECT és a VIEW DEFINITION engedélyeket egy másik felhasználó kapja meg, a jogosult megtekintheti az adatbázis összes függőségét.
Példák
Egy. Egy másik entitás által hivatkozott entitások visszaadása
Az alábbi példa a nézetben hivatkozott táblákat és oszlopokat adja vissza Production.vProductAndDescription. A nézet a referenced_entity_name és referenced_column_name oszlopokban visszaadott entitásoktól (tábláktól és oszlopoktól) függ.
USE AdventureWorks2022;
GO
SELECT OBJECT_NAME(referencing_id) AS referencing_entity_name,
o.type_desc AS referencing_description,
COALESCE(COL_NAME(referencing_id, referencing_minor_id), '(n/a)') AS referencing_minor_id,
referencing_class_desc,
referenced_server_name, referenced_database_name, referenced_schema_name,
referenced_entity_name,
COALESCE(COL_NAME(referenced_id, referenced_minor_id), '(n/a)') AS referenced_column_name,
is_caller_dependent, is_ambiguous
FROM sys.sql_expression_dependencies AS sed
INNER JOIN sys.objects AS o ON sed.referencing_id = o.object_id
WHERE referencing_id = OBJECT_ID(N'Production.vProductAndDescription');
GO
B. Egy másik entitásra hivatkozó entitások visszaadása
Az alábbi példa a Production.Producttáblára hivatkozó entitásokat adja vissza. A referencing_entity_name oszlopban visszaadott entitások a Product táblától függenek.
USE AdventureWorks2022;
GO
SELECT OBJECT_SCHEMA_NAME ( referencing_id ) AS referencing_schema_name,
OBJECT_NAME(referencing_id) AS referencing_entity_name,
o.type_desc AS referencing_description,
COALESCE(COL_NAME(referencing_id, referencing_minor_id), '(n/a)') AS referencing_minor_id,
referencing_class_desc, referenced_class_desc,
referenced_server_name, referenced_database_name, referenced_schema_name,
referenced_entity_name,
COALESCE(COL_NAME(referenced_id, referenced_minor_id), '(n/a)') AS referenced_column_name,
is_caller_dependent, is_ambiguous
FROM sys.sql_expression_dependencies AS sed
INNER JOIN sys.objects AS o ON sed.referencing_id = o.object_id
WHERE referenced_id = OBJECT_ID(N'Production.Product');
GO
C. Adatbázisközi függőségek visszaadása
Az alábbi példa az adatbázisközi függőségeket adja vissza. A példa először létrehozza az adatbázist db1 és két tárolt eljárást, amelyek az adatbázisok tábláira hivatkoznak db2 és db3. A sys.sql_expression_dependencies tábla ezután lekérdezve jelenti az eljárások és a táblák közötti adatbázisközi függőségeket. Figyelje meg, hogy a null érték a hivatkozott entitás referenced_schema_name oszlopában t3, mert az eljárás definíciójában nem adott meg sémanevet az adott entitáshoz.
CREATE DATABASE db1;
GO
USE db1;
GO
CREATE PROCEDURE p1 AS SELECT * FROM db2.s1.t1;
GO
CREATE PROCEDURE p2 AS
UPDATE db3..t3
SET c1 = c1 + 1;
GO
SELECT OBJECT_NAME (referencing_id),referenced_database_name,
referenced_schema_name, referenced_entity_name
FROM sys.sql_expression_dependencies
WHERE referenced_database_name IS NOT NULL;
GO
USE master;
GO
DROP DATABASE db1;
GO
Lásd még:
sys.dm_sql_referenced_entities (Transact-SQL)
sys.dm_sql_referencing_entities (Transact-SQL)