Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL ServerAzure
SQL Managed InstanceAzure
Synapse AnalyticsAnalytics
Platform System (PDW)
SQL analytics endpoint in Microsoft FabricWarehouse
in Microsoft Fabric
Bevat één rij voor elke bijnaam-afhankelijkheid van een door de gebruiker gedefinieerde entiteit in de huidige database. Dit omvat afhankelijkheden tussen native gecompileerde, door de gebruiker gedefinieerde scalair-functies en andere SQL Server-modules. Er ontstaat een afhankelijkheid tussen twee entiteiten wanneer één entiteit, de genoemde entiteit, bij naam verschijnt in een behouden SQL-expressie van een andere entiteit, genaamd de referentie-entiteit. Wanneer bijvoorbeeld een tabel wordt genoemd in de definitie van een view, hangt de view, als referentie-entiteit, af van de tabel, de gerefereerde entiteit. Als de tafel wordt weggelaten, is de weergave onbruikbaar.
Zie Scalaire User-Defined functies voor In-Memory OLTP voor meer informatie.
U kunt deze catalogusweergave gebruiken om afhankelijkheidsinformatie te rapporteren voor de volgende entiteiten:
Schema-gebonden entiteiten.
Entiteiten die niet aan schema's gebonden zijn.
Cross-database en cross-server entiteiten. Entiteitsnamen worden gerapporteerd; echter, entiteits-ID's worden niet opgelost.
Kolomniveau-afhankelijkheden van schema-gebonden entiteiten. Kolomniveau-afhankelijkheden voor niet-schema-gebonden objecten kunnen worden teruggegeven door gebruik te maken van sys.dm_sql_referenced_entities.
Serverniveau DDL wordt geactiveerd wanneer deze zich in de context van de
masterdatabase bevindt.
| Kolomnaam | Gegevenstype | Description |
|---|---|---|
referencing_id |
int | ID van de verwijzende entiteit. Niet nullwaarde. |
referencing_minor_id |
int | Kolom-ID wanneer de verwijzende entiteit een kolom is; anders 0. Niet nullwaarde. |
referencing_class |
tinyint | Klasse van de verwijzende entiteit.1 = Object of kolom12 = Database DDL-trigger13 = Server DDL-triggerNiet nullwaarde. |
referencing_class_desc |
nvarchar(60) | Beschrijving van de klasse van de referentie-entiteit.OBJECT_OR_COLUMNDATABASE_DDL_TRIGGERSERVER_DDL_TRIGGERNiet nullwaarde. |
is_schema_bound_reference |
bit |
1 = De gerefereerde entiteit is schema-gebonden.0 = De gerefereerde entiteit is niet schema-gebonden.Niet nullwaarde. |
referenced_class |
tinyint | Klasse van de verwezen entiteit.1 = Object of kolom6 = Type7 = Index10 = XML-schemaverzameling21 = PartitiefunctieNiet nullwaarde. |
referenced_class_desc |
nvarchar(60) | Beschrijving van de klasse van de gerefereerde entiteit.OBJECT_OR_COLUMNTYPEINDEXXML_SCHEMA_COLLECTIONPARTITION_FUNCTIONNiet nullwaarde. |
referenced_server_name |
sysname | Naam van de server van de genoemde entiteit. Deze kolom wordt gevuld voor cross-serverafhankelijkheden die worden gemaakt door een geldige vierdelige naam te specificeren. Voor informatie over meervoudige namen, zie Transact-SQL syntaxisconventies. NULL voor entiteiten zonder schema-gebonden entiteiten waarvoor de entiteit werd genoemd zonder een vierdelige naam te specificeren.NULL voor schema-bound entities omdat ze in dezelfde database moeten zitten en daarom alleen kunnen worden gedefinieerd met een tweedelige (schema.object) naam. |
referenced_database_name |
sysname | Naam van de database van de genoemde entiteit. Deze kolom wordt gevuld voor cross-database- of cross-serverreferenties die worden gemaakt door een geldige drie- of vierdelige naam te specificeren. NULL voor niet-schema-gebonden referenties wanneer deze worden gespecificeerd met een naam die één of twee delen bevat.NULL voor schema-gebonden entiteiten omdat ze in dezelfde database moeten zitten en daarom alleen kunnen worden gedefinieerd met een tweedelig (schema.object) naam. |
referenced_schema_name |
sysname | Schema waarin de verwezen entiteit thuishoort.NULL voor niet-schema-gebonden referenties waarin de entiteit werd genoemd zonder de schemanaam te specificeren.Nooit NULL voor schema-gebonden referenties, omdat schema-gebonden entiteiten gedefinieerd en verwezen moeten worden met een tweedelige naam. |
referenced_entity_name |
sysname | Naam van de genoemde entiteit. Niet nullwaarde. |
referenced_id |
int | ID van de genoemde entiteit. De waarde van deze kolom is nooit NULL bedoeld voor schema-gebonden referenties. De waarde van deze kolom is altijd NULL voor cross-server en cross-database referenties.NULL voor referenties binnen de database als de ID niet kan worden vastgesteld. Voor niet-schema-gebonden referenties kan de ID in de volgende gevallen niet worden opgelost:De gerefereerde entiteit bestaat niet in de database. Het schema van de gerefereerde entiteit hangt af van het schema van de aanroeper en wordt tijdens de uitvoering opgelost. In dit geval is is_caller_dependent ingesteld op 1. |
referenced_minor_id |
int | ID van de gerefereerde kolom wanneer de verwijzende entiteit een kolom is; anders 0. Niet nullwaarde. Een referentiede entiteit is een kolom wanneer een kolom wordt geïdentificeerd met naam in de referentie-entiteit, of wanneer de moederentiteit wordt gebruikt in een SELECT * statement. |
is_caller_dependent |
bit | Geeft aan dat schemabinding voor de gerefereerde entiteit tijdens runtime plaatsvindt; daarom hangt de resolutie van de entiteits-ID af van het schema van de aanroeper. Dit gebeurt wanneer de verwezen entiteit een opgeslagen procedure, uitgebreide opgeslagen procedure is, of een niet-schema-gebonden, door de gebruiker gedefinieerde functie die wordt aangeroepen in een uitvoerende instructie.1 = De gerefereerde entiteit is afhankelijk van de aanroeper en wordt tijdens runtime opgelost. In dit geval is referenced_id .NULL0 = De gerefereerde entiteits-ID is niet afhankelijk van de oproeper.Altijd 0 voor schema-gebonden referenties en voor cross-database- en cross-serverreferenties die expliciet een schemanaam specificeren. Bijvoorbeeld, een verwijzing naar een entiteit in het formaat EXEC MyDatabase.MySchema.MyProc is niet afhankelijk van de aanroeper. Een referentie in het formaat EXEC MyDatabase..MyProc is echter afhankelijk van de aanroeper. |
is_ambiguous |
bit | Geeft aan dat de verwijzing ambigu is en tijdens uitvoering kan worden opgelost naar een door de gebruiker gedefinieerde functie, een door de gebruiker gedefinieerd type (UDT), of een XQuery-referentie naar een kolom van het type xml. Stel bijvoorbeeld dat de verklaring SELECT Sales.GetOrder() FROM Sales.MySales is gedefinieerd in een opgeslagen procedure. Totdat de opgeslagen procedure is uitgevoerd, is het niet bekend of Sales.GetOrder() er een door de gebruiker gedefinieerde functie in het Sales schema of kolom met de naam Sales UDT is met een methode genaamd GetOrder().1 = De referentie is dubbelzinnig.0 = De referentie is ondubbelzinnig of de entiteit kan succesvol worden gebonden wanneer de weergave wordt aangeroepen.Altijd 0 voor schema-gebonden referenties. |
Remarks
De volgende tabel geeft een overzicht van de typen entiteiten waarvoor afhankelijkheidsinformatie wordt aangemaakt en onderhouden. Afhankelijkheidsinformatie wordt niet aangemaakt of onderhouden voor regels, standaardinstellingen, tijdelijke tabellen, tijdelijke opgeslagen procedures of systeemobjecten.
Note
Azure Synapse Analytics en Parallel Data Warehouse ondersteunen tabellen, weergaven, gefilterde statistieken en Transact-SQL opgeslagen procedures entiteitstypes uit deze lijst. Afhankelijkheidsinformatie wordt alleen gemaakt en onderhouden voor tabellen, weergaven en gefilterde statistieken.
| Entiteitstype | Referentie-entiteit | Referentie entiteit |
|---|---|---|
| Table | Ja1 | Ja |
| View | Ja | Ja |
| Gefilterde index | Ja2 | No |
| Gefilterde statistieken | Ja2 | No |
| Transact-SQL opgeslagen procedure3 | Ja | Ja |
| CLR stored procedure | No | Ja |
| Transact-SQL door de gebruiker gedefinieerde functie | Ja | Ja |
| Door de gebruiker gedefinieerde functie van CLR | No | Ja |
| CLR-trigger (DML en DDL) | No | No |
| Transact-SQL DML-trigger | Ja | No |
| Transact-SQL database-niveau DDL-trigger | Ja | No |
| Transact-SQL serverniveau DDL-trigger | Ja | No |
| Uitgebreide opgeslagen procedures | No | Ja |
| Queue | No | Ja |
| Synonym | No | Ja |
| Type (alias en CLR-door de gebruiker gedefinieerd type) | No | Ja |
| XML-schemaverzameling | No | Ja |
| Partitionfunctie | No | Ja |
1 Een tabel wordt alleen als referentie-entiteit bijgehouden wanneer deze verwijst naar een Transact-SQL module, door de gebruiker gedefinieerd type of XML-schemaverzameling in de definitie van een berekende kolom, CHECK-beperking of DEFAULT constraint.
2 Elke kolom die in het filterpredicaat wordt gebruikt, wordt gevolgd als een referentie-entiteit.
3 Genummerde opgeslagen procedures met een geheel getal groter dan 1 worden niet gevolgd als referentie- of referentieentiteit.
Permissions
Vereist VIEW DEFINITION-toestemming op de database en SELECT-toestemming op voor sys.sql_expression_dependencies de database. Select-machtigingen worden standaard alleen verleend aan leden van de db_owner vaste databaserol. Wanneer SELECT- en VIEW DEFINITION-machtigingen worden verleend aan een andere gebruiker, kan de grantee alle afhankelijkheden in de database bekijken.
Examples
A. Returneren entiteiten die door een andere entiteit worden aangeduid
Het volgende voorbeeld geeft de tabellen en kolommen terug die in de weergave Production.vProductAndDescriptionworden genoemd. De weergave hangt af van de entiteiten (tabellen en kolommen) die in de referenced_entity_name en-kolommen referenced_column_name worden teruggegeven.
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. Returneren entiteiten die verwijzen naar een andere entiteit
Het volgende voorbeeld geeft de entiteiten terug die naar de tabel Production.Productverwijzen. De entiteiten die in de kolom worden gegenereerd referencing_entity_name , zijn afhankelijk van de Product tabel.
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. Returneren cross-database afhankelijkheden
Het volgende voorbeeld geeft alle cross-database-afhankelijkheden terug. Het voorbeeld creëert eerst de database db1 en twee opgeslagen procedures die tabellen in de databases en db3refererendb2. De sys.sql_expression_dependencies tabel wordt vervolgens geraadpleegd om de cross-database afhankelijkheden tussen de procedures en de tabellen te rapporteren.
NULL wordt teruggegeven in de referenced_schema_name kolom voor de gerefereerde entiteit t3 omdat er geen schemanaam voor die entiteit is gespecificeerd in de definitie van de procedure.
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;