2012-05-14 41 views
5

He sabido por un tiempo que la característica "Ver dependencias" en SQL Server Management Studio es inútil ya que casi nunca devuelve todas las dependencias, sin embargo, ¿hay una mejor alternativa? Esta es una característica bastante poderosa por razones obvias, pero si no puede confiar en los resultados (como es el caso de Microsoft), de todos modos tiene que hacer todo el trabajo a mano, solo para estar seguro.Alternativa a SQL Server Management Studio "Ver dependencias"

Parece que esto sería bastante fácil de implementar, ¿hay alguna herramienta que maneje esto de manera efectiva?

Como nota al margen, ¿alguien sabe qué hay de malo con "View Dependencies"? ¿Hay una clase específica de dependencias que tiene problemas para identificar?

+0

http://sqlblog.com/blogs/aaron_bertrand/archive/2008/09/09/keeping-sysdepends-up-to-date-in-sql-server-2008.aspx –

Respuesta

2

Red Gate tiene una herramienta llamada SQL Dependency Tracker que funciona bastante bien.

También puede escribir una consulta en la vista sys.sql_dependencies que proporcionará información básica. Similar a esto:

SELECT o.name, o.type_desc, p.name, p.type_desc 
FROM sys.sql_dependencies d 
INNER JOIN sys.objects o 
    ON d.object_id = o.object_id 
INNER JOIN sys.objects p 
    ON d.referenced_major_id = p.object_id 

Aquí es un artículo acerca de las dependencias Hallazgo:

Finding dependencies in SQL Server 2005

+0

Si bien esto respondería a la pregunta, parece una inversión bastante empinada para satisfacer solo la necesidad destacada anteriormente (obviamente, hay otra característica de esta herramienta que tal vez hace que valga la pena el precio). ¿Alguna otra sugerencia (más barata)? –

+2

Actualicé mi respuesta, con una consulta que podría usar contra la vista de dependencias – Taryn

2

Usted podría tratar de usar SQL de búsqueda, lo que hace una búsqueda textual de los nombres de los objetos y las definiciones textuales. La ventaja es que también recogerá referencias de SQL dinámico, y el inconveniente es que puede recoger falsos positivos ya que no está buscando en base a un verdadero árbol de dependencias.

http://www.red-gate.com/products/sql-development/sql-search/

Otra ventaja es que es actualmente libre.

+1

Bueno, para ser explícito, no recogerá todas las referencias de SQL dinámico, particularmente aquellas donde los objetos dependientes pueden pasarse como un parámetro y definido como cadenas en la (s) aplicación (es) o en otros procedimientos. –

+0

Es cierto. No hay magia especial por la cual analiza el T-SQL para reconstruir las referencias de objeto ... eso sería algo. Supongo que esta característica requeriría que SQL Search trabaje con un generador de perfiles SQL. Idea interesante. –

0

Aquí hay un proceso de tres pasos. Todavía no es perfecto, pero ayuda a eliminar algunas de las lagunas. Supongamos que está buscando dependencias a la tabla "WidgetUser":

Primero, obtenga una lista de todos los módulos que puedan tener una referencia a la tabla. Salida de la consulta da lugar al texto:

select 'EXEC sys.sp_refreshsqlmodule ''dbo.' + OBJECT_NAME(m.object_id) + '''' 
from sys.sql_modules m 
where m.definition like '%WidgetUser%' 

A continuación, pegar el texto de salida y ejecutar las actualizaciones. Esto será algo como:

EXEC sys.sp_refreshsqlmodule 'dbo.up_WidgetUser_Select' 
EXEC sys.sp_refreshsqlmodule 'dbo.up_WidgetUser_Update' 
EXEC sys.sp_refreshsqlmodule 'dbo.WidgetUserView' 
EXEC sys.sp_refreshsqlmodule 'dbo.ufx_WidgetUser_Fooinize' 
... 

Ahora que sus dependencias están al día, ejecute sp_depends:

EXEC sp_depends @objname = N'dbo.WidgetUser' 
4

Tarde una pero esperemos que útil, ya que la herramienta recomendada es libre ...

I Estoy usando una herramienta similar a la recomendada por David: ApexSQL Search. Afirman tener su propio mecanismo de seguimiento de dependencias que funciona para todo menos para SQL dinámico.

No he probado en detalle para confirmar esto, sin embargo ...

de responsabilidad: No estoy afiliado con esta empresa, pero hago uso de sus herramientas con frecuencia.

Cuestiones relacionadas