sys.dm_sql_referenced_entities (Transact-SQL)sys.dm_sql_referenced_entities (Transact-SQL)

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2008)sìDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Restituisce una riga per ogni entità definita dall'utente a cui si fa riferimento per nome nella definizione dell'entità di riferimento specificata in SQL ServerSQL Server.Returns one row for each user-defined entity referenced by name in the definition of the specified referencing entity in SQL ServerSQL Server. Una dipendenza tra due entità viene creata quando un'entità definita dall'utente, detta il fa riferimento a entità, viene visualizzato in base al nome in un'espressione SQL persistente di un'altra entità definita dall'utente, chiamata di entità di riferimento .A dependency between two entities is created when one user-defined entity, called the referenced entity, appears by name in a persisted SQL expression of another user-defined entity, called the referencing entity. Ad esempio, se una stored procedure è l'entità di riferimento specificata, questa funzione restituisce tutte le entità definite dall'utente indicate nella stored procedure, ad esempio tabelle, viste, tipi definiti dall'utente (UDT) o altre stored procedure.For example, if a stored procedure is the specified referencing entity, this function returns all user-defined entities that are referenced in the stored procedure such as tables, views, user-defined types (UDTs), or other stored procedures.

È possibile utilizzare questa funzione a gestione dinamica per creare un report sui seguenti tipi di entità indicati dall'entità di riferimento specificata:You can use this dynamic management function to report on the following types of entities referenced by the specified referencing entity:

  • Entità associate allo schemaSchema-bound entities

  • Entità non associate allo schemaNon-schema-bound entities

  • Entità tra database e tra serverCross-database and cross-server entities

  • Dipendenze a livello di colonna relative alle entità associate e non associate allo schemaColumn-level dependencies on schema-bound and non-schema-bound entities

  • Tipi definiti dall'utente [alias e CLR definito dall'utente]User-defined types (alias and CLR UDT)

  • raccolte di XML SchemaXML schema collections

  • Funzioni di partizionePartition functions

Si applica a: SQL ServerSQL Server (da SQL Server 2008SQL Server 2008 a SQL Server 2017SQL Server 2017), Database SQLSQL Database.Applies to: SQL ServerSQL Server ( SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017), Database SQLSQL Database.

SintassiSyntax

sys.dm_sql_referenced_entities (  
    ' [ schema_name. ] referencing_entity_name ' , ' <referencing_class> ' )  

<referencing_class> ::=  
{  
    OBJECT  
  | DATABASE_DDL_TRIGGER  
  | SERVER_DDL_TRIGGER  
}  

ArgomentiArguments

[ schema_name.[ schema_name. ] referencing_entity_name] referencing_entity_name
Nome dell'entità di riferimento.Is the name of the referencing entity. schema_name è obbligatorio quando la classe di riferimento è OBJECT.schema_name is required when the referencing class is OBJECT.

schema_name.referencing_entity_name è nvarchar (517).schema_name.referencing_entity_name is nvarchar(517).

< Classe_riferimento > :: = {oggetto | DATABASE_DDL_TRIGGER | SERVER_DDL_TRIGGER}<referencing_class> ::= { OBJECT | DATABASE_DDL_TRIGGER | SERVER_DDL_TRIGGER }
Classe dell'entità di riferimento specificata.Is the class of the specified referencing entity. È possibile specificare solo una classe per istruzione.Only one class can be specified per statement.

< classe_riferimento > è nvarchar(60).<referencing_class> is nvarchar(60).

Tabella restituitaTable Returned

Nome colonnaColumn name Tipo di datiData type DescriptionDescription
referencing_minor_idreferencing_minor_id intint ID di colonna quando l'entità di riferimento è una colonna, in caso contrario, 0.Column ID when the referencing entity is a column; otherwise 0. Non ammette i valori Null.Is not nullable.
referenced_server_namereferenced_server_name sysnamesysname Nome del server dell'entità a cui viene fatto riferimento.Name of the server of the referenced entity.

Questa colonna viene popolata per le dipendenze tra server eseguite specificando un nome valido composto da quattro parti.This column is populated for cross-server dependencies that are made by specifying a valid four-part name. Per informazioni sui nomi composti da più parti, vedere convenzioni della sintassi Transact-SQL ( Transact-SQL ) .For information about multipart names, see Transact-SQL Syntax Conventions (Transact-SQL).

Valore NULL per le dipendenze non associate a schemi per cui è stato fatto riferimento all'entità senza specificare un nome in quattro parti.NULL for non-schema-bound dependencies for which the entity was referenced without specifying a four-part name.

Valore NULL per le entità associate a schemi perché devono essere nello stesso database e pertanto possono essere definite solo utilizzando due parti (Object) nome.NULL for schema-bound entities because they must be in the same database and therefore can only be defined using a two-part (schema.object) name.
referenced_database_namereferenced_database_name sysnamesysname Nome del database dell'entità a cui viene fatto riferimento.Name of the database of the referenced entity.

Questa colonna viene popolata per i riferimenti tra database o tra server eseguiti specificando un nome valido composto da tre o quattro parti.This column is populated for cross-database or cross-server references that are made by specifying a valid three-part or four-part name.

Valore NULL per i riferimenti non associati a schemi che vengono specificati utilizzando un nome composto da una o due parti.NULL for non-schema-bound references when specified using a one-part or two-part name.

Valore NULL per le entità associate a schemi perché devono essere nello stesso database e pertanto possono essere definite solo utilizzando due parti (Object) nome.NULL for schema-bound entities because they must be in the same database and therefore can only be defined using a two-part (schema.object) name.
referenced_schema_namereferenced_schema_name sysnamesysname Schema a cui appartiene l'entità a cui viene fatto riferimento.Schema in which the referenced entity belongs.

Valore NULL per i riferimenti non associati a schemi in cui è stato fatto riferimento all'entità senza specificare il nome dello schema.NULL for non-schema-bound references in which the entity was referenced without specifying the schema name.

Il valore non è mai NULL per riferimenti associati a schemi.Never NULL for schema-bound references.
referenced_entity_namereferenced_entity_name sysnamesysname Nome dell'entità a cui viene fatto riferimento.Name of the referenced entity. Non ammette i valori Null.Is not nullable.
referenced_minor_namereferenced_minor_name sysnamesysname Nome della colonna quando l'entità a cui viene fatto riferimento è una colonna; in caso contrario, NULL.Column name when the referenced entity is a column; otherwise NULL. referenced_minor_name è NULL, ad esempio, nella riga che elenca l'entità stessa cui viene fatto riferimento.For example, referenced_minor_name is NULL in the row that lists the referenced entity itself.

Un'entità a cui viene fatto riferimento è una colonna, se il nome nell'entità di riferimento identifica una colonna o se l'entità padre viene utilizzata in un'istruzione SELECT *.A referenced entity is a column when a column is identified by name in the referencing entity, or when the parent entity is used in a SELECT * statement.
referenced_idreferenced_id intint ID dell'entità a cui viene fatto riferimento.ID of the referenced entity. Quando referenced_minor_id è diverso da 0, referenced_id è l'entità in cui viene definita la colonna.When referenced_minor_id is not 0, referenced_id is the entity in which the column is defined.

Il valore è sempre NULL per i riferimenti tra server.Always NULL for cross-server references.

NULL per riferimenti tra database quando non è possibile determinare l'ID perché il database è offline o l'entità non può essere associata.NULL for cross-database references when the ID cannot be determined because the database is offline or the entity cannot be bound.

Valore NULL per i riferimenti all'interno del database se non è possibile determinare l'ID.NULL for references within the database if the ID cannot be determined. Per i riferimenti non associati a schema, l'ID non può essere risolto quando l'entità di riferimento non esiste nel database o quando la risoluzione dei nomi è dipendente dal chiamante.For non-schema-bound references, the ID cannot be resolved when the referenced entity does not exist in the database or when the name resolution is caller dependent. Nel secondo caso, is_caller_dependent viene impostato su 1.In the latter case, is_caller_dependent is set to 1.

Il valore non è mai NULL per riferimenti associati a schemi.Never NULL for schema-bound references.
referenced_minor_idreferenced_minor_id intint ID della colonna quando l'entità a cui viene fatto riferimento è una colonna; in caso contrario, 0.Column ID when the referenced entity is a column; otherwise, 0. referenced_minor_is è 0, ad esempio, nella riga che elenca l'entità stessa cui viene fatto riferimento.For example, referenced_minor_is is 0 in the row that lists the referenced entity itself.

Per i riferimenti non associati a schemi, le dipendenze della colonna vengono indicate solo quando è possibile associare tutte le entità cui viene fatto riferimento.For non-schema-bound references, column dependencies are reported only when all referenced entities can be bound. Se non è possibile associare una di tali entità, non viene segnalata alcuna dipendenza a livello di colonna e il valore di referenced_minor_id è 0.If any referenced entity cannot be bound, no column-level dependencies are reported and referenced_minor_id is 0. Vedere l'esempio D.See Example D.
referenced_classreferenced_class tinyinttinyint Classe dell'entità con riferimenti.Class of the referenced entity.

1 = Oggetto o colonna1 = Object or column

6 = Tipo6 = Type

10 = Raccolta di XML Schema10 = XML schema collection

21 = Funzione di partizione21 = Partition function
referenced_class_descreferenced_class_desc nvarchar(60)nvarchar(60) Descrizione della classe dell'entità a cui viene fatto riferimento.Description of class of referenced entity.

OBJECT_OR_COLUMNOBJECT_OR_COLUMN

TYPETYPE

XML_SCHEMA_COLLECTIONXML_SCHEMA_COLLECTION

PARTITION_FUNCTIONPARTITION_FUNCTION
is_caller_dependentis_caller_dependent bitbit Indica che l'associazione di schemi per l'entità cui viene fatto riferimento si verifica in fase di esecuzione. Di conseguenza, la risoluzione dell'ID dell'entità dipende dallo schema del chiamante.Indicates schema binding for the referenced entity occurs at run time; therefore, resolution of the entity ID depends on the schema of the caller. Ciò avviene quando l'entità cui viene fatto riferimento è una stored procedure, una stored procedure estesa o una funzione definita dall'utente chiamata all'interno di un'istruzione EXECUTE.This occurs when the referenced entity is a stored procedure, extended stored procedure, or user-defined function called within an EXECUTE statement.

1 = L'entità cui viene fatto riferimento è dipendente dal chiamante e viene risolta in fase di esecuzione.1 = The referenced entity is caller dependent and is resolved at run time. In questo caso, il valore di referenced_id è NULL.In this case, referenced_id is NULL.

0 = L'ID dell'entità a cui viene fatto riferimento non è dipendente dal chiamante.0 = The referenced entity ID is not caller dependent. Il valore è sempre 0 per i riferimenti associati a schemi e tra database e tra server che indicano in modo esplicito un nome schema.Always 0 for schema-bound references and for cross-database and cross-server references that explicitly specify a schema name. Ad esempio, un riferimento a un'entità nel formato EXEC MyDatabase.MySchema.MyProc non è dipendente dal chiamante.For example, a reference to an entity in the format EXEC MyDatabase.MySchema.MyProc is not caller dependent. Tuttavia, un riferimento nel formato EXEC MyDatabase..MyProc è dipendente dal chiamante.However, a reference in the format EXEC MyDatabase..MyProc is caller dependent.
is_ambiguousis_ambiguous bitbit Indica il riferimento è ambiguo e può essere risolto in fase di esecuzione per una funzione definita dall'utente, un tipo definito dall'utente (UDT) o un riferimento xquery a una colonna di tipo xml.Indicates the reference is ambiguous and can resolve at run time to a user-defined function, a user-defined type (UDT), or an xquery reference to a column of type xml. Si supponga, ad esempio, che l'istruzione SELECT Sales.GetOrder() FROM Sales.MySales sia definita in una stored procedure.For example, assume the statement SELECT Sales.GetOrder() FROM Sales.MySales is defined in a stored procedure. Durante l'esecuzione della stored procedure non è possibile sapere se Sales.GetOrder() è una funzione definita dall'utente nello schema Sales o una colonna Sales di tipo definito dall'utente con un metodo GetOrder().Until the stored procedure is executed, it is not known whether Sales.GetOrder() is a user-defined function in the Sales schema or column named Sales of type UDT with a method named GetOrder().

1 = Il riferimento a una funzione definita dall'utente o al metodo del tipo definito dall'utente (UDT) della colonna è ambiguo.1 = Reference to a user-defined function or column user-defined type (UDT) method is ambiguous.

0 = Il riferimento non è ambiguo o l'entità può essere associata correttamente quando la funzione viene chiamata.0 = Reference is unambiguous or the entity can be successfully bound when the function is called.

Il valore è sempre 0 per i riferimenti associati allo schema.Always 0 for schema-bound references.
is_selectedis_selected bitbit Si applica a: SQL Server 2012SQL Server 2012 tramite SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

1=Colonna o oggetto selezionato.1 = The object or column is selected.
is_updatedis_updated bitbit Si applica a: SQL Server 2012SQL Server 2012 tramite SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

1= Colonna o oggetto modificato.1 = The object or column is modified.
is_select_allis_select_all bitbit Si applica a: SQL Server 2012SQL Server 2012 tramite SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

1= Oggetto utilizzato in una clausola SELECT * (solo a livello di oggetto).1 = The object is used in a SELECT * clause (object-level only).
is_all_columns_foundis_all_columns_found bitbit Si applica a: SQL Server 2012SQL Server 2012 tramite SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

1 = È possibile trovare tutte le dipendenze delle colonne per l'oggetto.1 = All column dependencies for the object could be found.

0 = Impossibile trovare le dipendenze delle colonne per l'oggetto.0 = Column dependencies for the object could not be found.
is_insert_allis_insert_all bitbit Si applica a: SQL Server 2016SQL Server 2016 tramite SQL Server 2017SQL Server 2017.Applies to: SQL Server 2016SQL Server 2016 through SQL Server 2017SQL Server 2017.

1 = l'oggetto viene utilizzato in un'istruzione INSERT senza un elenco di colonne (a livello di oggetto solo).1 = The object is used in an INSERT statement without a column list (object-level only).
is_incompleteis_incomplete bitbit Si applica a: SQL Server 2016SQL Server 2016 SP2 tramite SQL Server 2017SQL Server 2017.Applies to: SQL Server 2016SQL Server 2016 SP2 through SQL Server 2017SQL Server 2017.

1 = oggetto o colonna presenta un errore di associazione ed è pertanto incompleta.1 = The object or column has a binding error and is incomplete.

EccezioniExceptions

In una delle seguenti condizioni, restituisce un set di risultati vuoto:Returns an empty result set under any of the following conditions:

  • Viene specificato un oggetto di sistema.A system object is specified.

  • L'entità specificata non è presente nel database corrente.The specified entity does not exist in the current database.

  • L'entità specificata non fa riferimento ad alcuna entità.The specified entity does not reference any entities.

  • Viene passato un parametro non valido.An invalid parameter is passed.

    Restituisce un errore quando l'entità di riferimento specificata è una stored procedure numerata.Returns an error when the specified referencing entity is a numbered stored procedure.

    Restituisce l'errore 2020 quando le dipendenze della colonna non possono essere risolte.Returns error 2020 when column dependencies cannot be resolved. Questo errore non impedisce alla query di restituire dipendenze a livello di oggetto.This error does not prevent the query from returning object-level dependencies.

OsservazioniRemarks

Questa funzione può essere eseguita nel contesto di qualsiasi database per restituire le entità che fanno riferimento a un trigger DDL a livello di server.This function can be executed in the context of the any database to return the entities that reference a server-level DDL trigger.

Nella tabella seguente sono elencati i tipi di entità per i quali vengono create e gestite le informazioni sulle dipendenze.The following table lists the types of entities for which dependency information is created and maintained. Le informazioni sulle dipendenze non vengono create né gestite per regole, impostazioni predefinite, tabelle temporanee, stored procedure temporanee o oggetti di sistema.Dependency information is not created or maintained for rules, defaults, temporary tables, temporary stored procedures, or system objects.

Tipo di entitàEntity type Entità di riferimentoReferencing entity Entità con riferimentiReferenced entity
TabellaTable Yes Yes
VistaView Yes Yes
Stored procedure Transact-SQLTransact-SQL Transact-SQLTransact-SQL stored procedure Yes Yes
stored procedure CLRCLR stored procedure noNo Yes
Funzione Transact-SQLTransact-SQL definita dall'utente Transact-SQLTransact-SQL user-defined function Yes Yes
Funzione CLR definita dall'utenteCLR user-defined function noNo Yes
Trigger CLR (DML e DDL)CLR trigger (DML and DDL) noNo noNo
Trigger DML Transact-SQLTransact-SQL Transact-SQLTransact-SQL DML trigger Yes noNo
Trigger DDL Transact-SQLTransact-SQL a livello di database Transact-SQLTransact-SQL database-level DDL trigger Yes noNo
Trigger DDL Transact-SQLTransact-SQL a livello di server Transact-SQLTransact-SQL server-level DDL trigger Yes noNo
Stored procedure esteseExtended stored procedures noNo Yes
CodaQueue noNo Yes
SinonimoSynonym noNo Yes
Tipo (alias e tipo di CLR definito dall'utente)Type (alias and CLR user-defined type) noNo Yes
Raccolta di XML SchemaXML schema collection noNo Yes
Funzione di partizionePartition function noNo Yes

*Una tabella viene registrata come un'entità di riferimento solo quando fa riferimento a un Transact-SQLTransact-SQL modulo, tipo definito dall'utente o raccolta di XML schema nella definizione di una colonna calcolata, un vincolo CHECK o un vincolo predefinito.* A table is tracked as a referencing entity only when it references a Transact-SQLTransact-SQL module, user-defined type, or XML schema collection in the definition of a computed column, CHECK constraint, or DEFAULT constraint.

** Le stored procedure numerate con un valore intero maggiore di 1 non vengono registrate come entità di riferimento o a cui viene fatto riferimento.** Numbered stored procedures with an integer value greater than 1 are not tracked as either a referencing or referenced entity.

AutorizzazioniPermissions

È richiesta l'autorizzazione SELECT per sys.dm_sql_referenced_entities e l'autorizzazione VIEW DEFINITION per l'entità di riferimento.Requires SELECT permission on sys.dm_sql_referenced_entities and VIEW DEFINITION permission on the referencing entity. Per impostazione predefinita, l'autorizzazione SELECT è concessa al ruolo public.By default, SELECT permission is granted to public. È richiesta l'autorizzazione VIEW DEFINITION per il database o un'autorizzazione ALTER ANY DATABASE DDL TRIGGER per il database corrente quando l'entità di riferimento è un trigger DDL a livello di database.Requires VIEW DEFINITION permission on the database or ALTER DATABASE DDL TRIGGER permission on the database when the referencing entity is a database-level DDL trigger. È richiesta l'autorizzazione VIEW ANY DEFINITION per il server quando l'entità di riferimento è un trigger DDL a livello di server.Requires VIEW ANY DEFINITION permission on the server when the referencing entity is a server-level DDL trigger.

EsempiExamples

A.A. Restituzione di entità cui fa riferimento un trigger DDL a livello di databaseReturning entities that are referenced by a database-level DDL trigger

Nell'esempio seguente vengono restituite le entità (tabelle e colonne) cui fa riferimento il trigger DDL ddlDatabaseTriggerLog a livello di database.The following example returns the entities (tables and columns) that are referenced by the database-level DDL trigger ddlDatabaseTriggerLog.

USE AdventureWorks2012;  
GO  
SELECT referenced_schema_name, referenced_entity_name, referenced_minor_name,   
    referenced_minor_id, referenced_class_desc  
FROM sys.dm_sql_referenced_entities ('ddlDatabaseTriggerLog', 'DATABASE_DDL_TRIGGER');  
GO  

B.B. Restituzione di entità cui fa riferimento un oggettoReturning entities that are referenced by an object

Nell'esempio seguente vengono restituite le entità cui fa riferimento la funzione dbo.ufnGetContactInformation definita dall'utente.The following example returns the entities that are referenced by the user-defined function dbo.ufnGetContactInformation.

USE AdventureWorks2012;  
GO  
SELECT referenced_schema_name, referenced_entity_name, referenced_minor_name,   
    referenced_minor_id, referenced_class_desc, is_caller_dependent, is_ambiguous  
FROM sys.dm_sql_referenced_entities ('dbo.ufnGetContactInformation', 'OBJECT');  
GO  

C.C. Restituzione delle dipendenze della colonnaReturning column dependencies

Nell'esempio seguente viene creata la tabella Table1 con la colonna calcolata c definita come somma delle colonne a e b.The following example creates the table Table1 with the computed column c defined as the sum of columns a and b. Viene quindi chiamata la vista sys.dm_sql_referenced_entities.The sys.dm_sql_referenced_entities view is then called. La vista restituisce due righe, una per ogni colonna definita nella colonna calcolata.The view returns two rows, one for each column defined in the computed column.

USE AdventureWorks2012;  
GO  
CREATE TABLE dbo.Table1 (a int, b int, c AS a + b);  
GO  
SELECT referenced_schema_name AS schema_name,  
    referenced_entity_name AS table_name,  
    referenced_minor_name AS referenced_column,  
    COALESCE(COL_NAME(OBJECT_ID(N'dbo.Table1'),referencing_minor_id), 'N/A') AS referencing_column_name  
FROM sys.dm_sql_referenced_entities ('dbo.Table1', 'OBJECT');  
GO

-- Remove the table.  
DROP TABLE dbo.Table1;  
GO  

Set di risultati:Here is the result set.

schema_name table_name referenced_column referencing_column  
----------- ---------- ----------------- ------------------  
dbo         Table1     a                 c  
dbo         Table1     b                 c  

D.D. Restituzione delle dipendenze delle colonne non associate a schemiReturning non-schema-bound column dependencies

Nell'esempio seguente viene eliminata Table1 e vengono create Table2 e la stored procedure Proc1.The following example drops Table1 and creates Table2 and stored procedure Proc1. La procedura fa riferimento a Table2 e alla tabella Table1 inesistente.The procedure references Table2 and the nonexistent table Table1. La vista sys.dm_sql_referenced_entities viene eseguita con la stored procedure specificata come entità di riferimento.The view sys.dm_sql_referenced_entities is run with the stored procedure specified as the referencing entity. Il set di risultati indica una riga per Table1 e 3 righe per Table2.The result set shows one row for Table1 and 3 rows for Table2. Poiché Table1 non è presente, le dipendenze della colonna non possono essere risolte e viene restituito l'errore 2020.Because Table1 does not exist, the column dependencies cannot be resolved and error 2020 is returned. La colonna is_all_columns_found restituisce 0 per Table1, a indicare che sono presenti colonne che non è stato possibile individuare.The is_all_columns_found column returns 0 for Table1 indicating that there were columns that could not be discovered.

USE AdventureWorks2012;  
GO  
IF OBJECT_ID ( 'dbo.Table1', 'U' ) IS NOT NULL   
    DROP TABLE dbo.Table1;  
GO  
CREATE TABLE dbo.Table2 (c1 int, c2 int);  
GO  
CREATE PROCEDURE dbo.Proc1 AS  
    SELECT a, b, c FROM Table1;  
    SELECT c1, c2 FROM Table2;  
GO  
SELECT referenced_id, referenced_entity_name AS table_name, referenced_minor_name AS referenced_column_name, is_all_columns_found  
FROM sys.dm_sql_referenced_entities ('dbo.Proc1', 'OBJECT');  
GO  

Set di risultati:Here is the result set.

referenced_id table_name   referenced_column_name  is_all_columns_found  
------------- ------------ ----------------------- --------------------  
935674381     Table2       NULL                    1  
935674381     Table2       C1                      1  
935674381     Table2       C2                      1  
NULL          Table1       NULL                    0  

Msg 2020, Level 16, State 1, Line 1The dependencies reported for entity "dbo.Proc1" might not include references to all columns. This is either because the entity references an object that does not exist or because of an error in one or more statements in the entity.  Before rerunning the query, ensure that there are no errors in the entity and that all objects referenced by the entity exist.

E.E. Dimostrazione della gestione delle dipendenze dinamicheDemonstrating dynamic dependency maintenance

Nell'esempio seguente viene esteso l'esempio D per illustrare la gestione dinamica delle dipendenze.The following example extends Example D to show that dependencies are maintained dynamically. Nell'esempio viene prima ricreata Table1, eliminata nell'esempio D. Viene quindi rieseguita la vista sys.dm_sql_referenced_entities con la stored procedure specificata come entità di riferimento.The example first re-creates Table1, which was dropped in Example D. Then sys.dm_sql_referenced_entities is run again with the stored procedure specified as the referencing entity. Il set di risultati indica che vengono restituite entrambe le tabelle e le rispettive colonne definite nella stored procedure.The result set shows that both tables and their respective columns defined in the stored procedure are returned. Inoltre, la colonna is_all_columns_found restituisce 1 per tutti gli oggetti e le colonne.In addition, the is_all_columns_found column returns a 1 for all objects and columns.

USE AdventureWorks2012;  
GO  
CREATE TABLE Table1 (a int, b int, c AS a + b);  
GO   
SELECT referenced_id, referenced_entity_name AS table_name, referenced_minor_name as column_name, is_all_columns_found  
FROM sys.dm_sql_referenced_entities ('dbo.Proc1', 'OBJECT');  
GO  
DROP TABLE Table1, Table2;  
DROP PROC Proc1;  
GO  

Set di risultati:Here is the result set.

referenced_id table_name   referenced_column_name  is_all_columns_found  
------------- ------------ ----------------------- --------------------  
935674381     Table2       NULL                    1 
935674381     Table2       c1                      1 
935674381     Table2       c2                      1 
967674495     Table1       NULL                    1 
967674495     Table1       a                       1  
967674495     Table1       b                       1  
967674495     Table1       c                       1  

F.F. Restituzione dell'utilizzo di oggetti e colonneReturning object or column usage

Nell'esempio seguente vengono restituiti gli oggetti e le dipendenze delle colonne della stored procedure HumanResources.uspUpdateEmployeePersonalInfo.The following example returns the objects and column dependencies of the stored procedure HumanResources.uspUpdateEmployeePersonalInfo. Questa procedura consente di aggiornare le colonne NationalIDNumber, BirthDate,``MaritalStatus, e Gender del Employee tabella basata su un oggetto specificato BusinessEntityID valore.This procedure updates the columns NationalIDNumber, BirthDate,``MaritalStatus, and Gender of the Employee table based on a specified BusinessEntityID value. Un'altra stored procedure, upsLogError, viene definita in un blocco TRY…CATCH per acquisire tutti gli errori di esecuzione.Another stored procedure, upsLogError is defined in a TRY…CATCH block to capture any execution errors. Le colonne is_selected, is_updated e is_select_all restituiscono informazioni sul modo in cui tali oggetti e colonne vengono utilizzati all'interno dell'oggetto di riferimento.The is_selected, is_updated, and is_select_all columns return information about how these objects and columns are used within the referencing object. La tabella e le colonne modificate vengono indicate con il valore 1 nella colonna is_updated.The table and columns that are modified are indicated by a 1 in the is_updated column. Viene selezionata solo la colonna BusinessEntityID e la stored procedure uspLogError non viene né selezionata né modificata.The BusinessEntityID column is only selected and the stored procedure uspLogError is neither selected nor modified.

Si applica a: SQL Server 2012SQL Server 2012 tramite SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

SELECT referenced_entity_name AS table_name, referenced_minor_name as column_name, is_selected, is_updated, is_select_all  
FROM sys.dm_sql_referenced_entities ('HumanResources.uspUpdateEmployeePersonalInfo', 'OBJECT');  

Set di risultati:Here is the result set.

table_name    column_name         is_selected is_updated is_select_all  
------------- ------------------- ----------- ---------- -------------  
uspLogError   NULL                0           0          0  
Employee      NULL                0           1          0  
Employee      BusinessEntityID    1           0          0  
Employee      NationalIDNumber    0           1          0  
Employee      BirthDate           0           1          0  
Employee      MaritalStatus       0           1          0  
Employee      Gender              0           1          0

Vedere ancheSee Also

sys.dm_sql_referencing_entities (Transact-SQL) sys.dm_sql_referencing_entities (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)sys.sql_expression_dependencies (Transact-SQL)