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_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 |
|