Megosztás a következőn keresztül:


sys.dm_sql_referencing_entities (Transact-SQL)

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

Minden egyes entitáshoz egy sort ad vissza az aktuális adatbázisban, amely egy másik felhasználó által definiált entitásra hivatkozik név szerint. Két entitás közötti függőség akkor jön létre, amikor az egyik entitás, az úgynevezett hivatkozott entitás, név szerint megjelenik egy másik entitás állandó SQL kifejezésében, az úgynevezett referencia entitásban. Például, ha egy felhasználó által definiált típust (UDT) jelölnek meg hivatkozott entitásként, ez a függvény minden felhasználódefiniált entitást visszaad, amely a definíciójában név szerint hivatkozik erre a típusra. A függvény nem ad vissza olyan entitásokat más adatbázisokban, amelyek hivatkozhatnak a megadott entitásra. Ezt a függvényt a master adatbázis kontextusában kell végrehajtani, hogy szerverszintű DDL trigger referenciás entitásként visszajusson.

Ezt a dinamikus menedzsment funkciót használhatod arra, hogy a jelenlegi adatbázisban a következő típusú entitásokról számolj be, amelyek hivatkoznak a megadott entitásra:

  • Séma-kötött vagy nem séma-kötött entitások

  • Adatbázis-szintű DDL triggerek

  • Szerverszintű DDL triggerek

Érvényes: SQL Server (SQL Server 2008 (10.0.x) és újabbabb), SQL Database.

Transact-SQL szintaxis konvenciók

Szemantika

sys.dm_sql_referencing_entities (  
    ' schema_name.referenced_entity_name ' , ' <referenced_class> ' )  
  
<referenced_class> ::=  
{  
    OBJECT  
  | TYPE  
  | XML_SCHEMA_COLLECTION  
  | PARTITION_FUNCTION  
}  

Arguments

schema_name.referenced_entity_name Ez a hivatkozott entitás neve.

schema_name kötelező, kivéve, ha a hivatkozott kurzus PARTITION_FUNCTION.

schema_name.referenced_entity_name Nvarchar(517).

<referenced_class> ::= { OBJECT | TYPE | XML_SCHEMA_COLLECTION | PARTITION_FUNCTION } Ez a hivatkozott entitás osztálya. Egy állításhoz csak egy osztály lehet megadni.

<referenced_class> nvarchar(60).

Visszaadott tábla

Oszlop név Adattípus Description
referencing_schema_name sysname Séma, amelybe a hivatkozó entitás is tartozik. Null értékű.

NULL adatbázis- és szerverszintű DDL triggerekhez.
referencing_entity_name sysname A hivatkozó entitás neve. Nem lehet null értékű.
referencing_id int A hivatkozó entitás azonosítója. Nem lehet null értékű.
referencing_class tinyint Az utaló entitás osztálya. Nem lehet null értékű.

1 = Objektum

12 = Adatbázis-szintű DDL trigger

13 = Szerverszintű DDL trigger
referencing_class_desc nvarchar(60) A hivatkozó entitás osztályának leírása.

OBJECT

DATABASE_DDL_TRIGGER

SERVER_DDL_TRIGGER
is_caller_dependent bit Azt jelzi, hogy a hivatkozott entitás azonosítójának felbontása futásidőben történik, mert a hívó sémájától függ.

1 = A hivatkozó entitás képes hivatkozni az entitásra; azonban a hivatkozott entitás azonosítójának felbontása hívótól függ, és nem határozható meg. Ez csak nem séma-kötött hivatkozások esetén fordul elő tárolt eljárásra, kiterjesztett tárolt eljárásra vagy a EXECUTE utasításban meghívott felhasználó által definiált függvényre.

0 = A hivatkozott entitás nem függ hívótól.

Exceptions

Üres eredményhalmazt ad vissza az alábbi feltételek bármelyike esetén:

  • Rendszerobjektum van megadva.

  • A megadott entitás nem létezik a jelenlegi adatbázisban.

  • A megadott entitás nem hivatkozik semmilyen entitásra.

  • Egy érvénytelen paramétert továbbítunk.

Hibát ad vissza, ha a megadott hivatkozott entitás egy számozott tárolt eljárás.

Megjegyzések

Az alábbi táblázat felsorolja azokat az entitástípusokat, amelyekhez a függőségi információkat hozják létre és karbantartják. Függőségi információkat nem hoznak létre vagy karbantartanak szabályokhoz, alapértelmezettekhez, ideiglenes táblákhoz, ideiglenes tárolt eljárásokhoz vagy rendszerobjektumokhoz.

Entitástípus Referencing entity Hivatkozott entitás
Táblázat Igen* Igen
View Igen Igen
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 trigger (DML és DDL) Nem Nem
Transact-SQL DML trigger Igen Nem
Transact-SQL adatbázis-szintű DDL trigger Igen Nem
Transact-SQL szerver szintű DDL trigger Igen Nem
Kiterjesztett tárolt eljárások Nem Igen
Várólista Nem Igen
Synonym 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ós függvény Nem Igen

* Egy táblázatot csak akkor követnek referenciaentitásként, ha egy Transact-SQL modulra, felhasználó által definiált típusra vagy XML sémagyűjteményre hivatkozik egy számított oszlop, CHECK korlátozás vagy DEFAULT korlátozás definíciójában.

** Az egész szám értékű 1-nél nagyobb számú tárolt eljárásokat nem követik sem hivatkozó, sem hivatkozott entitásként.

Permissions

SQL Server 2008 (10.0.x) - SQL Server 2012 (11.x)

  • A hivatkozott objektumon CONTROL engedélyt igényel. Ha a hivatkozott entitás egy partíciófüggvény, control engedélyre van szükség az adatbázisban.

  • A sys.dm_sql_referencing_entities-n SELECT engedély szükséges. Alapértelmezés szerint a SELECT engedély nyilvános.

SQL Server 2014 (12.x) és újabbá

  • Nem igényel engedélyt a hivatkozott objektumra. Részleges eredmények akkor is visszaadhatók, ha a felhasználó csak néhány hivatkozó entitáson rendelkezik VIEW DEFINITION-val.

  • Szükség van a VIEW DEFINITION (VIEW DEFINITION) objektumra, ha a hivatkozó entitás objektum.

  • Megköveteli a VIEW DEFINITION (VIEW DEFINITION) az adatbázisban, ha a hivatkozó entitás adatbázis-szintű DDL trigger.

  • Megköveteli az VIEW ANY DEFINITION funkciót a szerveren, ha a hivatkozó entitás szerverszintű DDL trigger.

Példák

A. Azoknak az entitásoknak a visszaküldése, amelyek egy adott entitásra utalnak

A következő példa adja vissza azokat az entitásokat az aktuális adatbázisban, amelyek a megadott táblára hivatkoznak.

USE AdventureWorks2022;  
GO  
SELECT referencing_schema_name, referencing_entity_name, referencing_id, referencing_class_desc, is_caller_dependent  
FROM sys.dm_sql_referencing_entities ('Production.Product', 'OBJECT');  
GO  

B. A megadott típusra utaló entitások visszaküldése

A következő példa adja vissza azokat az entitásokat, amelyek az alias típusra dbo.Flaghivatkoznak. Az eredményhalmaz azt mutatja, hogy két tárolt eljárás használja ezt a típust. A dbo.Flag típust több oszlop definíciójában is használják a HumanResources.Employee táblázatban; azonban mivel a típus nem szerepel a táblázatban található kiszámított oszlop, CHECK korlátozás vagy DEFAULT korlátozás definíciójában, a táblázathoz nem térnek HumanResources.Employee vissza sorok.

USE AdventureWorks2022;  
GO  
SELECT referencing_schema_name, referencing_entity_name, referencing_id, referencing_class_desc, is_caller_dependent  
FROM sys.dm_sql_referencing_entities ('dbo.Flag', 'TYPE');  
GO  

Itt van az eredmények összessége.

referencing_schema_name referencing_entity_name   referencing_id referencing_class_desc is_caller_dependent  
----------------------- -------------------------  ------------- ---------------------- -------------------  
HumanResources          uspUpdateEmployeeHireInfo  1803153469    OBJECT_OR_COLUMN       0  
HumanResources          uspUpdateEmployeeLogin     1819153526    OBJECT_OR_COLUMN       0  
(2 row(s) affected)`  

Lásd még:

sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)