Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL 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.
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)