Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Warehouse i Microsoft Fabric
Innehåller en rad för varje efternamnsberoende för en användardefinierad entitet i den aktuella databasen. Detta omfattar beroenden mellan internt kompilerade, skalära användardefinierade funktioner och andra SQL Server-moduler. Ett beroende mellan två entiteter skapas när en entitet, kallad den refererade entiteten, visas efter namn i ett beständiga SQL-uttryck för en annan entitet som kallas refererande entitet. När en tabell till exempel refereras till i definitionen av en vy beror vyn, som refererande entitet, på tabellen, den refererade entiteten. Om tabellen tas bort är vyn oanvändbar.
Mer information finns i Scalar User-Defined Functions for In-Memory OLTP.
Du kan använda den här katalogvyn för att rapportera beroendeinformation för följande entiteter:
Schemabundna entiteter.
Icke-schemabundna entiteter.
Korsdatabas- och korsserverentiteter. Enhetsnamn rapporteras; dock löses inte entitets-ID:n.
Beroenden på kolumnnivå för schemabundna entiteter. Beroenden på kolumnnivå för icke-schemabundna objekt kan returneras med hjälp av sys.dm_sql_referenced_entities.
Servernivå-DDL triggas när den befinner sig i databasens
masterkontext.
| Kolumnnamn | Datatyp | Beskrivning |
|---|---|---|
referencing_id |
int | ID för den refererande entiteten. Inte nullbar. |
referencing_minor_id |
int | Kolumn-ID när den refererande entiteten är en kolumn. annars 0. Inte nullbar. |
referencing_class |
pytteliten | Klass för den refererande entiteten.1 = Objekt eller kolumn12 = Databas DDL-trigger13 = Server DDL-triggerInte nullbar. |
referencing_class_desc |
nvarchar(60) | Beskrivning av klassen för refererande entitet.OBJECT_OR_COLUMNDATABASE_DDL_TRIGGERSERVER_DDL_TRIGGERInte nullbar. |
is_schema_bound_reference |
bit |
1 = Den refererade entiteten är schemabunden.0 = Den refererade enheten är icke-schema-bunden.Inte nullbar. |
referenced_class |
pytteliten | Klass för den refererade entiteten.1 = Objekt eller kolumn6 = Typ7 = Index10 = XML-schemasamling21 = PartitionsfunktionInte nullbar. |
referenced_class_desc |
nvarchar(60) | Beskrivning av klass för refererad entitet.OBJECT_OR_COLUMNTYPEINDEXXML_SCHEMA_COLLECTIONPARTITION_FUNCTIONInte nullbar. |
referenced_server_name |
sysname | Namnet på servern för den refererade entiteten. Den här kolumnen fylls i för beroenden mellan servrar som skapas genom att ange ett giltigt namn i fyra delar. Information om flerapartsnamn finns i Transact-SQL syntaxkonventioner. NULL för icke-schemabundna enheter där entiteten refererades utan att specificera ett fyrdelat namn.NULL för schemabundna enheter eftersom de måste finnas i samma databas och därför endast kan definieras med ett tvådelat (schema.objekt) namn. |
referenced_database_name |
sysname | Namnet på databasen för den refererade entiteten. Den här kolumnen fylls i för korsdatabas- eller korsserverreferenser som görs genom att ange ett giltigt namn i tre delar eller fyra delar. NULL för icke-schemabundna referenser när de anges med ett endelat eller tvådelat namn.NULL för schemabundna entiteter eftersom de måste finnas i samma databas och därför endast kan definieras med ett tvådelat (schema.objekt) namn. |
referenced_schema_name |
sysname | Schema där den refererade entiteten tillhör.NULL för icke-schemabundna referenser där entiteten refererades utan att specificera schemanamnet.Aldrig NULL för schemabundna referenser eftersom schemabundna enheter måste definieras och refereras med ett tvådelat namn. |
referenced_entity_name |
sysname | Namnet på den refererade entiteten. Inte nullbar. |
referenced_id |
int | ID för den refererade entiteten. Värdet på denna kolumn är aldrig NULL för schemabundna referenser. Värdet på denna kolumn gäller alltid NULL för korsserver- och databasreferenser.NULL för referenser i databasen om ID:t inte kan fastställas. För icke-schemabundna referenser kan ID:t inte lösas i följande fall:Den refererade entiteten finns inte i databasen. Schemat för den refererade entiteten beror på anroparens schema och löses vid körning. I det här fallet är is_caller_dependent inställt på 1. |
referenced_minor_id |
int | ID för den refererade kolumnen när referensentiteten är en kolumn. annars 0. Inte nullbar. En refererad entitet är en kolumn när en kolumn identifieras med namn i den refererande entiteten, eller när den överordnade entiteten används i en SELECT * -instruktion. |
is_caller_dependent |
bit | Anger att schemabindningen för den refererade entiteten sker vid körning. Därför beror lösningen på entitets-ID:t på uppringarens schema. Detta inträffar när den refererade entiteten är en lagrad procedur, en utökad lagrad procedur eller en icke-schemabunden användardefinierad funktion som anropas i en EXECUTE-instruktion.1 = Den refererade enheten är anropsberoende och löses vid körning. I detta fall är referenced_id .NULL0 = Det refererade entitets-ID:t är inte beroende av anroparen.Alltid 0 för schemabundna referenser och för korsdatabas- och korsserverreferenser som uttryckligen anger ett schemanamn. Till exempel är en referens till en entitet i formatet EXEC MyDatabase.MySchema.MyProc inte beroende av anroparen. En referens i formatet EXEC MyDatabase..MyProc är dock anroparberoende. |
is_ambiguous |
bit | Indikerar att referensen är tvetydig och kan lösas vid körning till en användardefinierad funktion, en användardefinierad typ (UDT) eller en XQuery-referens till en kolumn av typen xml. Anta till exempel att instruktionen SELECT Sales.GetOrder() FROM Sales.MySales definieras i en lagrad procedur. Tills den lagrade proceduren körs är det inte känt om Sales.GetOrder() är en användardefinierad funktion i schemat Sales eller kolumn med namnet Sales UDT med en metod som heter GetOrder().1 = Referensen är tvetydig.0 = Referensen är entydig eller så kan entiteten bindas framgångsrikt när vyn anropas.Alltid 0 för schemabundna referenser. |
Anmärkningar
I följande tabell visas de typer av entiteter för vilka beroendeinformation skapas och underhålls. Beroendeinformation skapas eller underhålls inte för regler, standardinställningar, temporära tabeller, tillfälliga lagrade procedurer eller systemobjekt.
Not
Azure Synapse Analytics och Parallel Data Warehouse stöder tabeller, vyer, filtrerad statistik och Transact-SQL lagrade procedurer från den här listan. Beroendeinformation skapas och underhålls endast för tabeller, vyer och filtrerad statistik.
| Entitetstyp | Referera till entitet | Refererad entitet |
|---|---|---|
| Bord | Ja1 | Ja |
| Utsikt | Ja | Ja |
| Filtrerat index | Ja2 | Nej |
| Filtrerad statistik | Ja2 | Nej |
| Transact-SQL lagrad procedur3 | Ja | Ja |
| CLR-lagrad procedur | Nej | Ja |
| Transact-SQL användardefinierad funktion | Ja | Ja |
| Användardefinierad CLR-funktion | Nej | Ja |
| CLR-utlösare (DML och DDL) | Nej | Nej |
| Transact-SQL DML-utlösare | Ja | Nej |
| Transact-SQL DDL-utlösare på databasnivå | Ja | Nej |
| Transact-SQL DDL-utlösare på servernivå | Ja | Nej |
| Utökade lagrade procedurer | Nej | Ja |
| Kö | Nej | Ja |
| Synonym | Nej | Ja |
| Typ (alias och CLR-användardefinierad typ) | Nej | Ja |
| XML-schemasamling | Nej | Ja |
| Partitionsfunktion | Nej | Ja |
1 En tabell spåras som en referensentitet endast när den refererar till en Transact-SQL modul, användardefinierad typ eller XML-schemasamling i definitionen av en beräknad kolumn, CHECK-begränsning eller DEFAULT begränsning.
2 Varje kolumn som används i filterpredikatet spåras som en referensentitet.
3 Numrerade lagrade procedurer med ett heltalsvärde större än 1 spåras inte som vare sig en refererande eller refererad entitet.
Behörigheter
Kräver VIEW DEFINITION-behörighet i databasen och SELECT-behörighet på sys.sql_expression_dependencies för databasen. Som standard beviljas SELECT-behörighet endast till medlemmar i den db_owner fasta databasrollen. När SELECT- och VIEW DEFINITION-behörigheter beviljas till en annan användare kan den beviljade användaren visa alla beroenden i databasen.
Exempel
A. Returnera entiteter som refereras av en annan entitet
I följande exempel returneras de tabeller och kolumner som refereras i vyn Production.vProductAndDescription. Vyn beror på vilka entiteter (tabeller och kolumner) som returneras i kolumnerna referenced_entity_name och 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. Returnera entiteter som refererar till en annan entitet
I följande exempel returneras de entiteter som refererar till tabellen Production.Product. De entiteter som returneras i kolumnen referencing_entity_name beror på tabellen Product.
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. Returnera databasöverskridande beroenden
I följande exempel returneras alla beroenden mellan databaser. Exemplet skapar först databasen db1 och två lagrade procedurer som refererar till tabeller i databaserna db2 och db3. Den sys.sql_expression_dependencies tabellen efterfrågas sedan för att rapportera beroenden mellan databaser mellan procedurerna och tabellerna.
NULL returneras i referenced_schema_name kolumnen för den refererade entiteten t3 eftersom ett schemanamn inte anges för den entiteten i proceduren definition.
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;