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 Managed Instance
Azure Synapse Analytics
Analytics platform System (PDW)
koncový bod SQL Analytics v Microsoft Fabric
Warehouse v Microsoft Fabric
Obsahuje jeden řádek pro každou závislost podle názvu na uživatelem definované entitě v aktuální databázi. To zahrnuje závislosti mezi nativně zkompilovanými, skalárními uživatelem definovanými funkcemi a dalšími moduly SQL Serveru. Závislost mezi dvěma entitami se vytvoří, když se jedna entita nazývá odkazovaná entita, se zobrazí podle názvu v trvalém výrazu SQL jiné entity, který se nazývá odkazující na entitu. Pokud je například tabulka odkazována v definici zobrazení, zobrazení, jako odkazující entita, závisí na tabulce, odkazované entitě. Pokud se tabulka zahodí, zobrazení je nepoužitelné.
Další informace naleznete v tématu Skalární User-Defined Functions pro In-Memory OLTP.
Toto zobrazení katalogu můžete použít k hlášení informací o závislostech pro následující entity:
Entity vázané na schéma
Nevázané entity bez schématu
Entity mezi databázemi a entitami mezi servery Jsou hlášeny názvy subjektů; identifikace entit však nejsou vyřazeny.
Závislosti na úrovni sloupců u entit vázaných schématem Závislosti na úrovni sloupců pro objekty, které nejsou vázané na schéma, mohou být vráceny pomocí sys.dm_sql_referenced_entities.
DDL na úrovni serveru se spouští v kontextu databáze
master.
| Název sloupce | Datový typ | Popis |
|---|---|---|
referencing_id |
int | ID odkazující entity. Není nulovatelný. |
referencing_minor_id |
int | ID sloupce, pokud odkazující entita je sloupec; jinak 0. Není nulovatelný. |
referencing_class |
tinyint | Třída odkazující entity1 = Objekt nebo sloupec12 = Spouštěč DDL databáze13 = Spouštěč DDL serveruNení nulovatelný. |
referencing_class_desc |
nvarchar(60) | Popis třídy odkazující entity.OBJECT_OR_COLUMNDATABASE_DDL_TRIGGERSERVER_DDL_TRIGGERNení nulovatelný. |
is_schema_bound_reference |
bitová |
1 = Odkazovaná entita je vázána na schéma.0 = Odkazovaná entita není vázaná na schéma.Není nulovatelný. |
referenced_class |
tinyint | Třída odkazované entity1 = Objekt nebo sloupec6 = Typ7 = Index10 = Kolekce XML schémat21 = Partition funkceNení nulovatelný. |
referenced_class_desc |
nvarchar(60) | Popis třídy odkazované entityOBJECT_OR_COLUMNTYPEINDEXXML_SCHEMA_COLLECTIONPARTITION_FUNCTIONNení nulovatelný. |
referenced_server_name |
|
Název serveru odkazované entity Tento sloupec se vyplní pro závislosti mezi servery, které jsou provedeny zadáním platného čtyřdílného názvu. Informace o názvech s více částmi najdete v tématu Transact-SQL konvence syntaxe. NULL pro entity nevázané na schémata, u kterých byla entita odkazována bez specifikace čtyřdílného názvu.NULL pro entity vázané na schémata, protože musí být ve stejné databázi a proto je lze definovat pouze pomocí dvoudílného (schema.object) jména. |
referenced_database_name |
|
Název databáze odkazované entity. Tento sloupec se vyplní pro odkazy mezi databázemi nebo mezi servery, které jsou vytvořené zadáním platného třídílného nebo čtyřdílného názvu. NULL pro odkazy bez schématu při použití jednosložkového nebo dvoudílného názvu.NULL pro entity vázané na schémata, protože musí být ve stejné databázi a proto je lze definovat pouze pomocí dvoučástného schématu (schéma.objektu) názvu. |
referenced_schema_name |
|
Schéma, ve kterém odkazovaná entita patříNULL pro odkazy nevázané na schémata, kde byla entita odkazována bez specifikace názvu schématu.Nikdy u NULL odkazů vázaných na schémata, protože entity vázané na schéma musí být definovány a odkazovány pomocí dvoudílného názvu. |
referenced_entity_name |
|
Název odkazované entity Není nulovatelný. |
referenced_id |
int | ID odkazované entity. Hodnota tohoto sloupce nikdy NULL není určena pro reference vázané na schémata. Hodnota tohoto sloupce je vždy NULL pro odkazy mezi servery a databázemi.NULL pro reference v databázi, pokud nelze identifikovat ID. Pro reference nevázané na schéma nelze ID vyřešit v následujících případech:Odkazovaná entita v databázi neexistuje. Schéma odkazované entity závisí na schématu volajícího a je vyřešeno za běhu. V tomto případě je is_caller_dependent nastavena na hodnotu 1. |
referenced_minor_id |
int | ID odkazovaného sloupce, pokud je odkazující entita sloupec; jinak 0. Není nulovatelný. Odkazovaná entita je sloupec, pokud je sloupec identifikován názvem v odkazující entitě nebo když je nadřazená entita použita v příkazu SELECT *. |
is_caller_dependent |
bitová | Označuje, že vazba schématu pro odkazovanou entitu probíhá za běhu; proto rozlišení ID entity závisí na schématu volajícího. K tomu dochází v případě, že odkazovaná entita je uložená procedura, rozšířená uložená procedura nebo uživatelem definovaná funkce nedefinovaná schématem, která je volána v příkazu EXECUTE.1 = Odkazovaná entita je závislá na volajícím a je vyřešena za běhu. V tomto případě je referenced_id .NULL0 = Odkazované ID entity není závislé na volajícím.Vždy 0 pro odkazy vázané na schéma a pro odkazy mezi databázemi a mezi servery, které explicitně určují název schématu. Například odkaz na entitu ve formátu EXEC MyDatabase.MySchema.MyProc není závislý na volajícím. Odkaz ve formátu EXEC MyDatabase..MyProc je však závislý na volajícím. |
is_ambiguous |
bitová | Označuje, že reference je nejednoznačná a může se za běhu vyřešit na uživatelem definovanou funkci, uživatelem definovaný typ (UDT) nebo XQuery odkaz na sloupec typu xml. Předpokládejme například, že příkaz SELECT Sales.GetOrder() FROM Sales.MySales je definován v uložené proceduře. Dokud není uložená procedura vykonána, není známo, zda Sales.GetOrder() je v schématu Sales uživatelsky definovaná funkce nebo sloupec Sales typu UDT s metodou nazvanou GetOrder().1 = Odkaz je nejednoznačný.0 = Reference je jednoznačná nebo lze entitu úspěšně svázat při volání pohledu.Vždy 0 pro odkazy vázané na schéma. |
Poznámky
Následující tabulka uvádí typy entit, pro které se informace o závislostech vytvářejí a udržují. Informace o závislosti nejsou vytvářeny ani udržovány pro pravidla, výchozí hodnoty, dočasné tabulky, dočasné uložené procedury ani systémové objekty.
Poznámka
Azure Synapse Analytics a Paralelní datový sklad podporují tabulky, zobrazení, filtrované statistiky a Transact-SQL typy entit uložených procedur z tohoto seznamu. Informace o závislostech se vytvářejí a udržují pouze pro tabulky, zobrazení a filtrované statistiky.
| Typ entity | Odkazování na entitu | Odkazovaná entita |
|---|---|---|
| Stůl | Ano1 | Ano |
| Pohled | Ano | Ano |
| Filtrovaný index | Ano2 | Ne |
| Filtrované statistiky | Ano2 | Ne |
| Transact-SQL uložená procedura3 | Ano | Ano |
| Uložená procedura CLR | Ne | Ano |
| Transact-SQL uživatelem definovaná funkce | Ano | Ano |
| Uživatelem definovaná funkce CLR | Ne | Ano |
| Trigger CLR (DML a DDL) | Ne | Ne |
| Trigger Transact-SQL DML | Ano | Ne |
| trigger DDL na úrovni databáze Transact-SQL | Ano | Ne |
| trigger DDL na úrovni serveru Transact-SQL | Ano | Ne |
| Rozšířené uložené procedury | Ne | Ano |
| Fronta | Ne | Ano |
| Synonymum | Ne | Ano |
| Typ (alias a typ definovaný uživatelem CLR) | Ne | Ano |
| Kolekce schémat XML | Ne | Ano |
| Funkce Partition | Ne | Ano |
1 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, CHECK omezení nebo DEFAULT omezení.
2 Každý sloupec použitý v predikátu filtru je sledován jako referenční entita.
3 Číslované uložené procedury s celočíselnou hodnotou větší než 1 nejsou sledovány ani jako referencující, ani jako referencovaná entita.
Dovolení
Vyžaduje VIEW povolení DEFINITION v databázi a SELECT povolení zapnuté sys.sql_expression_dependencies pro databázi. Ve výchozím nastavení je oprávnění SELECT uděleno pouze členům db_owner pevné databázové role. Pokud jsou oprávnění SELECT a VIEW DEFINITION udělena jinému uživateli, může příjemce zobrazit všechny závislosti v databázi.
Příklady
A. Vraťte entity, na které odkazuje jiná entita
Následující příklad vrátí tabulky a sloupce odkazované v zobrazení Production.vProductAndDescription. Zobrazení závisí na entitách (tabulkách a sloupcích) vrácených ve sloupcích referenced_entity_name a referenced_column_name.
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');
B. Vraťte entity, které odkazují na jinou entitu
Následující příklad vrátí entity, které odkazují na tabulku Production.Product. Entity vrácené ve sloupci referencing_entity_name závisí na Product tabulce.
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');
C. Vrácení závislostí mezi databázemi
Následující příklad vrátí všechny závislosti mezi databázemi. Příklad nejprve vytvoří databázi db1 a dvě uložené procedury, které odkazují na tabulky v databázích db2 a db3. Tabulka sys.sql_expression_dependencies se pak dotazuje, aby hlásila závislosti mezi postupy a tabulkami mezi databázemi.
NULL je vrácen ve sloupci referenced_schema_name pro odkazovanou entitu t3 , protože název schématu není pro tuto entitu v definici procedury specifikován.
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;
Související obsah
-
sys.dm_sql_referenced_entities (Transact-SQL) - sys.dm_sql_referencing_entities (Transact-SQL)