sys.dm_sql_referencing_entities (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance
Devuelve una fila para cada entidad en la base de datos actual que hace referencia por nombre a otra entidad definida por el usuario. Se crea una dependencia entre dos entidades cuando una entidad, llamada entidad a la que se hace referencia, aparece por nombre en una expresión de SQL persistente de otra entidad, llamada entidad que hace la referencia. Por ejemplo, si un tipo definido por el usuario (UDT) se especifica como la entidad a la que se hace referencia, esta función devuelve cada entidad definida por el usuario que hace referencia a ese tipo por nombre en su definición. La función no devuelve las entidades en otras bases de datos que pueden hacer referencia a la entidad especificada. Se puede ejecutar esta función en el contexto de la base de datos maestra para devolver un desencadenador DDL de nivel de servidor como una entidad que hace la referencia.
Puede usar esta función de administración dinámica para informar sobre los tipos siguientes de entidades de la base de datos actual que hacen referencia a la entidad especificada:
Entidades enlazadas o no a un esquema.
Desencadenadores DLL de nivel de base de datos
Desencadenadores DDL de nivel de servidor
Se aplica a: SQL Server ( SQL Server 2008 (10.0.x) y versiones posteriores), SQL Database.
Convenciones de sintaxis de Transact-SQL
Sintaxis
sys.dm_sql_referencing_entities (
' schema_name.referenced_entity_name ' , ' <referenced_class> ' )
<referenced_class> ::=
{
OBJECT
| TYPE
| XML_SCHEMA_COLLECTION
| PARTITION_FUNCTION
}
Argumentos
schema_name.referenced_entity_name
Es el nombre de la entidad a la que se hace referencia.
schema_name
es necesario, excepto cuando se PARTITION_FUNCTION la clase a la que se hace referencia.
schema_name.referenced_entity_name
es nvarchar(517).
<referenced_class> ::= { OBJECT | TYPE | XML_SCHEMA_COLLECTION | PARTITION_FUNCTION }
Es la clase de la entidad a la que se hace referencia. Solo se puede especificar una clase por instrucción.
<referenced_class>
es nvarchar(60).
Tabla devuelta
Nombre de la columna | Tipo de datos | Descripción |
---|---|---|
referencing_schema_name | sysname | Esquema al que pertenece la entidad que hace la referencia. Acepta valores NULL. NULL para desencadenadores DDL de nivel de base de datos y nivel de servidor. |
referencing_entity_name | sysname | Nombre de la entidad que hace la referencia. No admite valores NULL. |
referencing_id | int | Identificador de la entidad que hace la referencia. No admite valores NULL. |
referencing_class | tinyint | Clase de la entidad que hace la referencia. No admite valores NULL. 1 = Objeto 12 = Desencadenador DLL de nivel de base de datos 13 = Desencadenador DDL de nivel de servidor |
referencing_class_desc | nvarchar(60) | Descripción de la clase de entidad de referencia. OBJECT DATABASE_DDL_TRIGGER SERVER_DDL_TRIGGER |
is_caller_dependent | bit | Indica que la resolución del identificador de la entidad a la que se hace referencia se realiza en tiempo de ejecución porque depende del esquema del autor de la llamada. 1 = La entidad que hace la referencia tiene el potencial para hacer referencia a la entidad; sin embargo, la resolución del identificador de la entidad depende del autor de la llamada y no se puede determinar. Esto solo se produce para las referencias no enlazadas a un esquema a un procedimiento almacenado, un procedimiento almacenado extendido o una función definida por el usuario llamada en una instrucción EXECUTE. 0 = La entidad a la que se hace referencia no depende del autor de la llamada. |
Excepciones
Devuelve un conjunto de resultados vacío si se da alguna de las condiciones siguientes:
Se especifica un objeto del sistema.
La entidad especificada no existe en la base de datos actual.
La entidad especificada no hace referencia a ninguna entidad.
Se pasó un parámetro no válido.
Devuelve un error si la entidad especificada a la que se hace referencia es un procedimiento almacenado numerado.
Comentarios
La tabla siguiente enumera los tipos de entidades para las que se crea y mantiene la información de dependencia. La información de dependencia no se crea ni mantiene para reglas, valores predeterminados, tablas temporales, procedimientos almacenados temporales u objetos del sistema.
Tipo de entidad | Entidad que hace la referencia | Entidad a la que se hace referencia |
---|---|---|
Tabla | Sí* | Sí |
Ver | Sí | Sí |
Procedimiento almacenado de Transact-SQL** | Sí | Sí |
procedimiento almacenado CLR | No | Sí |
Función Transact-SQL definida por el usuario | Sí | Sí |
Función CLR definida por el usuario | No | Sí |
Desencadenador CLR (DML y DDL) | No | No |
Desencadenador DML de Transact-SQL | Sí | No |
Desencadenador DDL de nivel de la base de datos de Transact-SQL | Sí | No |
Desencadenador DDL de nivel de servidor de Transact-SQL | Sí | No |
Procedimientos almacenados extendidos | No | Sí |
Cola | No | Sí |
Synonym (Sinónimo) | No | Sí |
Tipo (tipo CLR y alias definido por el usuario) | No | Sí |
Colección de esquemas XML | No | Sí |
Función de partición | No | Sí |
* Se realiza el seguimiento de una tabla como una entidad de referencia solo si hace referencia a un módulo de Transact-SQL, un tipo definido por el usuario o una colección de esquemas XML en la definición de una columna calculada, restricción CHECK o restricción DEFAULT.
** No se realiza el seguimiento de los procedimientos almacenados numerados con un valor entero mayor que 1 como la entidad que hace referencia ni como la entidad a la que se hace referencia.
Permisos
SQL Server 2008 (10.0.x): SQL Server 2012 (11.x)
Requiere el permiso CONTROL en el objeto al que se hace referencia. Cuando la entidad a la que se hace referencia es una función de partición, se requiere el permiso CONTROL en la base de datos.
Requiere el permiso SELECT en sys.dm_sql_referencing_entities. De forma predeterminada, se concede el permiso SELECT a public.
SQL Server 2014 (12.x) y versiones posteriores
No requiere permisos en el objeto al que se hace referencia. Se pueden devolver resultados parciales si el usuario tiene el permiso VIEW DEFINITION solo en algunas entidades de referencia.
Requiere el permiso VIEW DEFINITION en el objeto si la entidad de referencia es un objeto.
Requiere el permiso VIEW DEFINITION en la base de datos si la entidad de referencia es un desencadenador DDL de base de datos.
Requiere el permiso VIEW ANY DEFINITION en el servidor si la entidad de referencia es un desencadenador DDL de servidor.
Ejemplos
A Devolver las entidades que hacen referencia a una entidad determinada
El ejemplo siguiente devuelve las entidades en la base de datos actual que hacen referencia a la tabla especificada.
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. Devolver las entidades que hacen referencia a un tipo determinado
El ejemplo siguiente devuelve las entidades que hacen referencia al tipo de alias dbo.Flag
. El conjunto de resultados muestra que dos procedimientos almacenados utilizan este tipo. El dbo.Flag
tipo también se usa en la definición de varias columnas de la HumanResources.Employee
tabla; sin embargo, dado que el tipo no está en la definición de una columna calculada, restricción CHECK o restricción DEFAULT en la tabla, no se devuelve ninguna fila para la HumanResources.Employee
tabla.
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
Este es el conjunto de resultados.
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)`
Consulte también
sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)