Cómo determinar dependencias de tabla y columna dentro de una base de datos SQL

Si se necesitan hacer cambios a una columna es necesario realizar algunas evaluaciones de impacto para determinar qué objetos serán afectados, lo que significa que las dependencias de tablas y columnas SQL dentro de la base de datos SQL Server necesitan ser encontradas.

Una de las maneras es usar la tabla SYSCOMMENTS. Es una tabla que contiene entradas para cada vista, regla, entidad por defecto, desencadenador, restricción CHECK, restricción DEFAULT y procedimiento almacenado. La columna TEXT en la tabla syscomments contiene el código para todos estos objetos, y sabiéndolo usted puede escribir un código para verificar las dependencias:

select name 
from syscomments c 
join sysobjects o on c.id = o.id 
where TEXT like '%Person%' and TEXT like '%FirstName%'

La anterior consulta es usada para determinar qué objetos usan la columna FirstName de la tabla Person. Después de ejecutarla, los resultados serán:

Column Name

Esto es sólo un ejemplo simplificado que contiene algo de información básica. El problema con este método es que retornará todos los objetos que apenas mencionen las palabras “Person” y “FirstName” sin realmente hacer una referencia a la columna Person.FirstName.

Ahora veamos el mismo escenario e información disponible en ApexSQL Clean, una  herramienta que puede analizar dependencias SQL Server y eliminar objetos no deseados. Lo primero a hacer es activar la opción Column dependencies.

Esta opción incluirá todas las columnas disponibles en la cuadrícula principal haciendo posible expandir y previsualizar las columnas para cada tabla. Aparte del nombre de la columna, el tipo de la columna es automáticamente mostrado ya sea que es un tipo de columna Regular, ROWGUID o Identity.

Para el objeto o columna seleccionados, ApexSQL Clean proveerá más información adicional en los paneles Children y Parents. El panel Children contendrá una lista de objetos que dependen del seleccionado, en este caso la columna FirstName.

Cuando sea que un esquema de tabla es cambiado, es importante identificar todos los objetos de base de datos SQL que pudieran ser afectados por el cambio. Sin hacer un análisis de impacto completo, hay el riesgo de causar problemas cuando se implemente la actualización. La principal ventaja de usar ApexSQL Clean es que apalanca los algoritmos de análisis de dependencias para poder mostrar dependencias al nivel de columnas, a diferencia de SQL Server Management Studio, donde las dependencias a nivel de objetos sólo se pueden ver.

Traductor: Daniel Calbimonte

noviembre 14, 2015