sys.sql_dependencies (Transact-SQL)

Actualizado: 12 de diciembre de 2006

Contiene una fila por cada dependencia de una entidad (independiente) conforme a su referencia en la expresión o instrucciones SQL que definen otro objeto (dependiente) que hace la referencia. La vista sys.sql_dependencies está diseñada para realizar un seguimiento de las dependencias por nombre entre entidades. Para cada fila de sys.sql_dependencies, la entidad a la que se hace referencia aparece por nombre en una expresión SQL persistente del objeto de referencia. Además, si el objeto al que se hace referencia tiene una expresión enlazada a esquemas, se exige la dependencia. Para obtener más información, vea Descripción de las dependencias SQL.

Nombre de columna Tipo de datos Descripción

class

tinyint

Identifica la clase de la entidad (independiente) a la que se hace referencia:

0 = Objeto o columna (sólo referencias no enlazadas a esquemas)

0 = Objeto o columna (referencias enlazadas a esquemas)

2 = Tipos (referencias enlazadas a esquemas)

3 = Colecciones de esquemas XML (referencias enlazadas a esquemas)

4 = Función de partición (referencias enlazadas a esquemas)

class_desc

nvarchar(60)

Descripción de la clase de la entidad (independiente) a la que se hace referencia:

  • OBJECT_OR_COLUMN_REFERENCE_NON_SCHEMA_BOUND
  • OBJECT_OR_COLUMN_REFERENCE_SCHEMA_BOUND
  • TYPE_REFERENCE
  • XML_SCHEMA_COLLECTION_REFERENCE
  • PARTITION_FUNCTION_REFERENCE

object_id

int

Id. del objeto que hace la referencia (dependiente).

column_id

int

Si el Id. dependiente es una columna, se obtiene el Id. de la columna que hace la referencia (dependiente); en caso contrario, el valor es 0.

referenced_major_id

int

Id. de la entidad a la que se hace referencia (independiente), interpretado por el valor de clase de acuerdo con:

0, 1 = Id. de objeto del objeto o la columna.

2 = Id. del tipo.

3 = Id. de la colección de esquemas XML.

referenced_minor_id

int

Id. secundario de la entidad a la que se hace referencia (independiente), interpretado por el valor de clase de acuerdo con lo siguiente.

Si la clase =:

0, referenced_minor_id es un Id. de columna; si no es una columna, es 0.

1, referenced_minor_id es un Id. de columna; si no es una columna, es 0.

En caso contrario, referenced_minor_id = 0.

is_selected

bit

Objeto o columna seleccionados.

is_updated

bit

Objeto o columna actualizados.

is_select_all

bit

El objeto se utiliza en la instrucción SELECT* (sólo nivel de objeto).

Notas

Las dependencias se establecen durante la ejecución de CREATE sólo si la entidad a la que se hace referencia (independiente) existe en el momento en que se crea el objeto que hace la referencia (dependiente). Debido a la resolución diferida de nombres, la entidad a la que se hace referencia no tiene que existir en el momento de la creación. En este caso, no se crea una fila de dependencias. Además, las entidades a las que se hace referencia mediante SQL dinámico no establecen dependencias.

Si la entidad a la que se hace referencia (independiente) se quita con DROP, la fila de dependencias se elimina automáticamente. Para volver a establecer la fila de dependencias, debe volver a crear ambas con CREATE en el orden de dependencia correcto.

Tanto en las dependencias enlazadas como no enlazadas a esquemas se realiza un seguimiento de los objetos. Las restricciones CHECK, los valores predeterminados y las referencias a columnas están enlazados a esquemas de forma predeterminada. En las dependencias de los tipos, colecciones de esquemas XML y funciones de partición sólo se realiza un seguimiento de las dependencias enlazadas a esquemas. En el Service Pack 1 de SQL Server 2005 y versiones anteriores, los parámetros definidos en una función Transact-SQL o un procedimiento están vinculados implícitamente por esquemas. Por lo tanto, los parámetros que dependen de un tipo definido por el usuario CLR, un alias o una colección de esquemas XML pueden verse mediante la vista de catálogo sys.sql_dependencies. Sin embargo, esto también significa que no se puede cambiar el nombre de estos objetos. En el Service Pack 2 de SQL Server 2005, en la vista de catálogo sólo se realiza un seguimiento de los parámetros que dependen de estos objetos si el módulo Transact-SQL se crea con un enlace de esquema. Un tipo definido por el usuario CLR, un alias o una colección de esquemas XML utilizada como un parámetro en un módulo que no está enlazado mediante esquemas, se pueden cambiar de nombre, pero es posible que la definición del módulo se deba actualizar mediante sp_refreshsqlmodule.

Ejemplos

A. Buscar las dependencias en una función especificada

El siguiente ejemplo devuelve las dependencias en una función especificada. Antes de ejecutar la consulta siguiente, reemplace <database_name> y <schema_name.function_name> por nombres válidos.

USE <database_name>;
GO
SELECT OBJECT_NAME(object_id) AS referencing_object_name
    ,COALESCE(COL_NAME(object_id, column_id), '(n/a)') AS referencing_column_name
    ,*
FROM sys.sql_dependencies
WHERE referenced_major_id = OBJECT_ID('<schema_name.function_name>')
ORDER BY OBJECT_NAME(object_id), COL_NAME(object_id, column_id);
GO 

B. Buscar las restricciones CHECK que dependen de un tipo definido por el usuario CLR

Antes de ejecutar la consulta siguiente, reemplace <database_name> por un nombre válido y <schema_name.data_type_name> por un nombre del tipo definido por el usuario CLR del esquema válido.

USE <database_name>;
GO
SELECT SCHEMA_NAME(o.schema_id) AS schema_name
    ,OBJECT_NAME(o.parent_object_id) AS table_name
    ,OBJECT_NAME(o.object_id) AS constraint_name
FROM sys.sql_dependencies AS d
JOIN sys.objects AS o ON o.object_id = d.object_id
WHERE referenced_major_id = TYPE_ID('<schema_name.data_type_name>')
    AND class = 2 -- schema-bound references to type
    AND OBJECTPROPERTY(o.object_id, 'IsCheckCnst') = 1; -- exclude non-CHECK dependencies
GO

C. Buscar vistas, funciones Transact-SQL y procedimientos almacenados Transact-SQL que dependen de un tipo definido por el usuario CLR o un tipo de datos de alias

La consulta siguiente devuelve todas las dependencias enlazadas a esquemas en vistas, funciones Transact-SQL y procedimientos almacenados Transact-SQL de un tipo definido por el usuario CLR determinado o de un tipo de alias.

USE <database_name>;
GO
SELECT SCHEMA_NAME(o.schema_id) AS dependent_object_schema
  ,OBJECT_NAME(o.object_id) AS dependent_object_name
  ,o.type_desc AS dependent_object_type
  ,d.class_desc AS kind_of_dependency
  ,TYPE_NAME (d.referenced_major_id) AS type_name
FROM sys.sql_dependencies AS d 
JOIN sys.objects AS o
  ON d.object_id = o.object_id
  AND o.type IN ('FN','IF','TF', 'V', 'P')
WHERE d.class = 2 -- dependencies on types
  AND d.referenced_major_id = TYPE_ID('<schema_name.data_type_name>')
ORDER BY dependent_object_schema, dependent_object_name;
GO

Vea también

Referencia

Vistas de catálogo (Transact-SQL)
Vistas de catálogo de objetos (Transact-SQL)
sp_rename (Transact-SQL)
sp_refreshsqlmodule (Transact-SQL)

Otros recursos

Implementar tipos definidos por el usuario
Descripción de las dependencias SQL
Consultar las preguntas más frecuentes (P+F) del catálogo del sistema de SQL Server
Administrar colecciones de esquemas XML en el servidor

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

12 de diciembre de 2006

Contenido nuevo:
  • Se agregó información acerca de los tipos definidos por el usuario, los alias y las dependencias de esquema XML cuando estos objetos se declaran como parámetros en los módulos Transact-SQL.
  • Se agregó la sección Ejemplos.