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 Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
Geeft één rij terug voor elke entiteit in de huidige database die een andere door de gebruiker gedefinieerde entiteit bij naam verwijst. 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. Als bijvoorbeeld een door de gebruiker gedefinieerd type (UDT) als de gerefereerde entiteit wordt gespecificeerd, geeft deze functie elke door de gebruiker gedefinieerde entiteit terug die dat type bij naam verwijst in zijn definitie. De functie geeft geen entiteiten terug in andere databases die mogelijk naar de gespecificeerde entiteit verwijzen. Deze functie moet worden uitgevoerd in de context van de masterdatabase om een serverniveau DDL-trigger als referentie-entiteit terug te geven.
Je kunt deze dynamische beheerfunctie gebruiken om te rapporteren over de volgende typen entiteiten in de huidige database die naar de gespecificeerde entiteit verwijzen:
Schema-gebonden of niet-schema-gebonden entiteiten
DDL-triggers op databaseniveau
Serverniveau DDL-triggers
Van toepassing op: SQL Server (SQL Server 2008 (10.0.x) en later), SQL Database.
Transact-SQL syntaxis-conventies
Syntaxis
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 Is de naam van de genoemde entiteit.
schema_name is verplicht, behalve wanneer de genoemde cursus PARTITION_FUNCTION.
schema_name.referenced_entity_nameis Nvarchar(517).
<referenced_class> ::= { OBJECT | TYPE | XML_SCHEMA_COLLECTION | PARTITION_FUNCTION } Is de klasse van de gerefereerde entiteit. Per statement kan slechts één klasse worden opgegeven.
<referenced_class> is nvarchar(60).
Tabel geretourneerd
| Kolomnaam | Gegevenstype | Description |
|---|---|---|
| referencing_schema_name | sysname | Schema waarin de verwijzende entiteit thuishoort. Is null-waarde. NULL voor database- en serverniveau DDL-triggers. |
| referencing_entity_name | sysname | Naam van de verwijzende entiteit. Is niet nulbaar. |
| referencing_id | int | ID van de verwijzende entiteit. Is niet nulbaar. |
| referencing_class | tinyint | Klasse van de verwijzende entiteit. Is niet nulbaar. 1 = Object 12 = DDL-trigger op databaseniveau 13 = Server-niveau DDL-trigger |
| referencing_class_desc | nvarchar(60) | Beschrijving van de klasse van referentie-entiteit. OBJECT DATABASE_DDL_TRIGGER SERVER_DDL_TRIGGER |
| is_caller_dependent | bit | Geeft aan dat de resolutie van de verwezen entiteit-ID tijdens run plaatsvindt omdat deze afhangt van het schema van de aanroeper. 1 = De verwijzende entiteit heeft het potentieel om naar de entiteit te verwijzen; echter, de resolutie van de verwezen entiteits-ID is afhankelijk van de aanroeper en kan niet worden bepaald. Dit gebeurt alleen voor niet-schema-gebonden verwijzingen naar een opgeslagen procedure, uitgebreide opgeslagen procedure of door de gebruiker gedefinieerde functie die in een uitvoerende instructie wordt aangeroepen. 0 = De gerefereerde entiteit is niet afhankelijk van de aanroeper. |
Exceptions
Geeft een lege resultaatset terug onder een van de volgende voorwaarden:
Er wordt een systeemobject gespecificeerd.
De gespecificeerde entiteit bestaat niet in de huidige database.
De gespecificeerde entiteit verwijst niet naar entiteiten.
Er wordt een ongeldige parameter doorgegeven.
Geeft een foutmelding wanneer de gespecificeerde verwijzingsentiteit een genummerde opgeslagen procedure is.
Opmerkingen
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.
| Entiteitstype | Referentie-entiteit | Referentie entiteit |
|---|---|---|
| Table | Ja* | Yes |
| Bekijk | Yes | Yes |
| Transact-SQL opgeslagen procedure** | Yes | Yes |
| CLR stored procedure | Nee. | Yes |
| Transact-SQL door de gebruiker gedefinieerde functie | Yes | Yes |
| CLR-gebruikersgedefinieerde functie | Nee. | Yes |
| CLR-trigger (DML en DDL) | Nee. | Nee. |
| Transact-SQL DML-trigger | Yes | Nee. |
| Transact-SQL database-niveau DDL-trigger | Yes | Nee. |
| Transact-SQL serverniveau DDL-trigger | Yes | Nee. |
| Uitgebreide opgeslagen procedures | Nee. | Yes |
| Wachtrij | Nee. | Yes |
| Synoniem | Nee. | Yes |
| Type (alias en CLR-door de gebruiker gedefinieerd type) | Nee. | Yes |
| XML-schemaverzameling | Nee. | Yes |
| Partitionfunctie | Nee. | Yes |
* Een tabel wordt alleen als referentie-entiteit gevolgd 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-beperking.
** Genummerde opgeslagen procedures met een geheel getal groter dan 1 worden niet gevolgd als referentie- of referentieentiteit.
Permissions
SQL Server 2008 (10.0.x) - SQL Server 2012 (11.x)
Vereist CONTROL-toestemming voor het verwezen object. Wanneer de entiteit waarnaar wordt verwezen een partitiefunctie is, is CONTROL-machtiging voor de database vereist.
Vereist SELECT-toestemming op sys.dm_sql_referencing_entities. Select-machtigingen worden standaard verleend aan het publiek.
SQL Server 2014 (12.x) en later
Vereist geen rechten voor het gerefereerde object. Gedeeltelijke resultaten kunnen worden teruggegeven als de gebruiker VIEW DEFINITION heeft op slechts enkele van de referentie-entiteiten.
Vereist VIEW DEFINITION op het object wanneer de referentie-entiteit een object is.
Vereist VIEW DEFINITION op de database wanneer de refererende entiteit een databaseniveau DDL-trigger is.
Vereist VIEW ANY DEFINITION op de server wanneer de refererende entiteit een serverniveau DDL-trigger is.
Voorbeelden
Eén. Het teruggeven van de entiteiten die naar een bepaalde entiteit verwijzen
Het volgende voorbeeld geeft de entiteiten in de huidige database terug die verwijzen naar de gespecificeerde tabel.
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. Het teruggeven van de entiteiten die verwijzen naar een gegeven type
Het volgende voorbeeld geeft de entiteiten terug die verwijzen naar het aliastype dbo.Flag. De resultaatset toont aan dat twee opgeslagen procedures dit type gebruiken. Het dbo.Flag type wordt ook gebruikt bij de definitie van meerdere kolommen in de HumanResources.Employee tabel; omdat het type echter niet in de definitie van een berekende kolom, CHECK-beperking of DEFAULT-beperking in de tabel voorkomt, worden er geen rijen voor de HumanResources.Employee tabel teruggegeven.
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
Hier is het resultatenoverzicht.
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)`
Zie ook
sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_afhankelijkheden (Transact-SQL)