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. Esta función se puede ejecutar 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
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 se requiere excepto cuando la clase a la que se hace referencia es PARTITION_FUNCTION.
schema_name.referenced_entity_name es de tipo 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. 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 acepta valores NULL. |
referencing_id |
int |
Identificador de la entidad que hace la referencia. No acepta valores NULL. |
referencing_class |
tinyint |
Clase de la entidad que hace la referencia. No acepta 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 que hace la referencia |
Entidad a la que se hace referencia |
---|---|---|
Tabla |
Sí* |
Sí |
Vista |
Sí |
Sí |
Procedimiento almacenado de Transact-SQL** |
Sí |
Sí |
procedimiento almacenado CLR |
No |
Sí |
Función definida por el usuario de Transact-SQL |
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 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í |
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
Necesita 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 AdventureWorks2012;
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 AdventureWorks2012;
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 row(s) affected)
Vea también
Referencia
sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)
Historial de cambios
Contenido actualizado |
---|
Se quita la frase "No se realiza un seguimiento de las dependencias de las columnas para las funciones con valores de tabla de CLR" de la sección Notas. |
Se ha corregido el tipo de datos del parámetro referenced_entity_name. |