sys.dm_sql_referencing_entities (Transact-SQL)
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 master 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
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 se requiere excepto cuando la clase a la que se hace referencia es PARTITION_FUNCTION.
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 de tipo nvarchar(60).
Tabla devuelta
Nombre de columna |
Tipo de datos |
Descripción |
---|---|---|
referencing_schema_name |
sysname |
Esquema al que pertenece la entidad que hace la referencia. Admite 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 la entidad que hace la 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 de referencia |
Entidad a la que se hace referencia |
---|---|---|
Tabla |
Sí* |
Sí |
Vista |
Sí |
Sí |
Procedimiento almacenado Transact-SQL** |
Sí |
Sí |
Procedimiento almacenado CLR |
No |
Sí |
Función definida por el usuario de Transact-SQL |
Sí |
Sí |
Función definida por el usuario CLR |
No |
Sí |
Desencadenador CLR (DML y DDL) |
No |
Ninguno |
Desencadenador DML de Transact-SQL |
Sí |
No |
Desencadenador DLL de nivel de base de datos de Transact-SQL |
Sí |
No |
Desencadenador DDL de servidor Transact-SQL |
Sí |
No |
Procedimientos almacenados extendidos |
No |
Sí |
Cola |
No |
Sí |
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 Transact-SQL, un tipo definido por el usuario o una colección de esquemas XML en la definición de una columna calculada, una restricción CHECK o una restricción DEFAULT.
** No se realiza un seguimiento de los procedimientos almacenados numerados con un valor entero mayor que 1 como una entidad de referencia ni como una entidad a la que se hace referencia.
Para obtener más información, vea Descripción de las dependencias SQL.
Permisos
Requiere el permiso CONTROL en la entidad a la que se hace referencia y el permiso SELECT en sys.dm_sql_referencing_entities. 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. De forma predeterminada, se concede el permiso SELECT a public.
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 AdventureWorks2008R2;
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 tipo dbo.Flag también se utiliza en la definición de varias columnas en la tabla HumanResources.Employee; sin embargo, ya que el tipo no está en la definición de una columna calculada, restricción CHECK o restricción DEFAULT de la tabla, no se devolverá ninguna fila para la tabla HumanResources.Employee.
USE AdventureWorks2008R2;
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
El conjunto de resultados es el siguiente.
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 filas afectadas)
Vea también