Sdílet prostřednictvím


sys.dm_sql_referencing_entities (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Vrací jeden řádek pro každou entitu v aktuální databázi, která odkazuje na jinou uživatelem definovanou entitu podle jména. Závislost mezi dvěma entitami vzniká, když se jedna entita, nazývaná referenční entita, objeví jménem v trvalém SQL výrazu jiné entity, nazývané referenční entita. Například pokud je uživatelsky definovaný typ (UDT) specifikován jako odkazovaná entita, tato funkce vrací každou uživatelsky definovanou entitu, která tento typ odkazuje podle názvu ve své definici. Funkce nevrací entity v jiných databázích, které mohou odkazovat na danou entitu. Tato funkce musí být vykonána v kontextu hlavní databáze, aby vrátila DDL trigger na úrovni serveru jako referenční entitu.

Tuto funkci dynamické správy můžete použít k hlášení o následujících typech entit v aktuální databázi, které odkazují na danou entitu:

  • Entity vázané na schéma nebo bez schématu

  • DDL triggery na úrovni databáze

  • Serverové DDL spouštěče

Platí na: SQL Server (SQL Server 2008 (10.0.x) a novější), SQL databázi.

Transact-SQL konvence syntaxe

Syntaxe

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 Je název odkazované entity.

schema_name je vyžadován, kromě případů, kdy je uvedená třída PARTITION_FUNCTION.

schema_name.referenced_entity_nameje nvarchar(517).

<referenced_class> ::= { OBJECT | TYPE | XML_SCHEMA_COLLECTION | PARTITION_FUNCTION } je třída odkazované entity. Na příkaz lze zadat pouze jednu třídu.

<referenced_class> je nvarchar(60).

Vrácená tabulka

Název sloupce Datový typ Description
referencing_schema_name sysname Schéma, do kterého odkazující entita patří. Je nullable.

NULL pro DDL triggery na úrovni databáze a serveru.
referencing_entity_name sysname Název odkazující entity. Není možné nastavit jako null.
referencing_id int ID odkazující entity. Není možné nastavit jako null.
referencing_class tinyint Třída referenční entity. Není možné nastavit jako null.

1 = objekt

12 = DDL trigger na úrovni databáze

13 = Serverový DDL trigger
referencing_class_desc nvarchar(60) Popis třídy odkazující entity.

OBJECT

DATABASE_DDL_TRIGGER

SERVER_DDL_TRIGGER
is_caller_dependent bit Označuje, že rozlišení identifikovaného subjektu probíhá za běhu, protože závisí na schématu volajícího.

1 = Odkazující entita má potenciál na entitu odkazovat; rozlišení identifikovaného subjektu je však závislé na volajícím a nelze jej určit. To se děje pouze u odkazů na uloženou proceduru, rozšířenou uloženou proceduru nebo uživatelem definovanou funkci volanou v příkazu EXEKUTE, která není vázaná na schéma.

0 = Odkazovaná entita není závislá na volajícím.

Exceptions

Vrací prázdnou množinu výsledků za kterékoliv z následujících podmínek:

  • Je specifikován systémový objekt.

  • Specifikovaná entita v aktuální databázi neexistuje.

  • Specifikovaná entita neodkazuje na žádné entity.

  • Je předán neplatný parametr.

Vrací chybu, když je specifikovaná referenční entita číslovaná uložená procedura.

Poznámky

Následující tabulka uvádí typy entit, pro které jsou informace o závislostech vytvářeny a udržovány. Informace o závislostech nejsou vytvářeny ani udržovány pro pravidla, výchozí nastavení, dočasné tabulky, dočasné uložené procedury ani systémové objekty.

Typ entity Referenční entita Odkazovaná entita
Table Ano* Ano
Zobrazit Ano Ano
Transact-SQL uložený postup** Ano Ano
Uložená procedura CLR Ne Ano
Transact-SQL uživatelem definovaná funkce Ano Ano
Uživatelsky definovaná funkce CLR Ne Ano
CLR spoušť (DML a DDL) Ne Ne
Transact-SQL DML trigger Ano Ne
Transact-SQL DDL trigger na úrovni databáze Ano Ne
Transact-SQL spouštěč DDL na úrovni serveru Ano Ne
Rozšířené uložené procedury Ne Ano
Queue Ne Ano
Synonym Ne Ano
Typ (alias a CLR uživatelsky definovaný typ) Ne Ano
Kolekce schémat XML Ne Ano
Partition funkce Ne Ano

* Tabulka je sledována jako referenční entita pouze tehdy, když odkazuje na Transact-SQL modul, uživatelem definovaný typ nebo kolekci XML schématu v definici vypočítaného sloupce, omezení CHECK nebo omezení DEFAULT.

** Číslované uložené procedury s celočíselnou hodnotou větší než 1 nejsou sledovány ani jako referencující, ani jako referencovaná entita.

Povolení

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

  • Vyžaduje oprávnění CONTROL na odkazovaný objekt. Pokud je odkazovaná entita funkcí oddílu, vyžaduje se oprávnění CONTROL k databázi.

  • Vyžaduje povolení SELECT na sys.dm_sql_referencing_entities. Ve výchozím nastavení se oprávnění SELECT uděluje veřejnosti.

SQL Server 2014 (12.x) a později

  • Nevyžaduje žádná oprávnění na odkazovaný objekt. Částečné výsledky lze vrátit, pokud uživatel má VIEW DEFINITION pouze na některých referencujících entitách.

  • Vyžaduje VIEW DEFINITION na objektu, pokud je referenční entita objektem.

  • Vyžaduje VIEW DEFINITION v databázi, pokud je referenční entita databázovým DDL triggerem.

  • Vyžaduje ZOBRAZIT LIBOVOLNOU DEFINICI na serveru, když je referenční entita serverovým DDL triggerem.

Examples

A. Vrácení entit, které odkazují na danou entitu

Následující příklad vrací entity v aktuální databázi, které odkazují na zadanou tabulku.

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. Vrácení entit, které odkazují na daný typ

Následující příklad vrací entity, které odkazují na typ dbo.Flagaliasu . Výsledná sada ukazuje, že tento typ používají dvě uložené procedury. Tento dbo.Flag typ se také používá při definici několika sloupců v tabulce HumanResources.Employee ; protože však typ není v definici vypočteného sloupce, CHECK omezení nebo DEFAULT v tabulce, nejsou pro tabulku HumanResources.Employee vráceny žádné řádky.

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  

Tady je soubor výsledků.

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)`  

Viz také

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