2012-05-14 22 views
5

Od dawna wiem, że funkcja "View Dependencies" w SQL Server Management Studio jest bezużyteczna, ponieważ prawie nigdy nie zwraca wszystkich zależności, jednak czy istnieje lepsza alternatywa? Jest to dość potężna funkcja z oczywistych powodów, ale jeśli nie możesz polegać na wynikach (tak jak w przypadku Microsoftu), musisz wykonać całą pracę ręcznie, aby być bezpiecznym.Alternatywa dla SQL Server Management Studio "Zobacz zależności"

Wydaje się, że byłoby to łatwe do wdrożenia, czy istnieją jakieś narzędzia, które radzą sobie z tym skutecznie?

Czy na marginesie, czy ktoś wie, co jest nie tak z "Wyświetl zależności"? Czy istnieje określona klasa zależności, które mają problemy z identyfikacją?

+0

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

Odpowiedz

2

Red Gate ma narzędzie o nazwie SQL Dependency Tracker, które działa całkiem dobrze.

Można również napisać zapytanie dotyczące widoku sys.sql_dependencies, które dałoby kilka podstawowych informacji. Podobny do tego:

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 

Oto artykuł o znalezienie zależności:

Finding dependencies in SQL Server 2005

+0

Podczas gdy to mogłoby odpowiedzieć na pytanie, wydaje się, że dość stromą inwestycją jest spełnienie pojedynczej potrzeby wyróżnionej powyżej (oczywiście jest jeszcze inna cecha tego narzędzia, która być może czyni ją wartą ceny). Jakieś inne (tańsze) sugestie? –

+2

Uaktualniłem moją odpowiedź, używając zapytania, które można wykorzystać w widoku zależności. – Taryn

2

można spróbować za pomocą SQL Search, który nie szukaj tekstowy nazwy obiektów i definicjach tekstowych. Zaletą jest to, że będzie również pobierać dynamiczne referencje SQL, a wadą jest to, że może wykryć fałszywe alarmy, ponieważ nie szuka w oparciu o prawdziwe drzewo zależności.

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

Kolejną zaletą jest to, że obecnie za darmo.

+1

Cóż, aby było jasne, nie będzie pobierać wszystkich dynamicznych odwołań SQL, szczególnie tych, w których obiekt (-y) zależne mogą być przekazywane jako parametr i zdefiniowane jako ciągi w aplikacjach lub w innych procedurach. –

+0

Prawda. Nie ma specjalnej magii, dzięki której parsuje T-SQL, aby zrekonstruować odniesienia do obiektów ... to byłoby coś. Domyślam się, że ta funkcja wymagałaby wyszukiwania SQL współpracującego z profilerem SQL. Ciekawy pomysł. –

0

Oto trzyetapowy proces. Nadal nie jest doskonały, ale pomaga wyeliminować niektóre luki. Załóżmy, że szukasz zależności do tabeli "WidgetUser":

Najpierw wyświetl listę wszystkich modułów, które mogą mieć odniesienie do tabeli. Wyprowadź wyniki zapytania do tekstu:

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

Następnie wklej ten tekst wyjściowy i uruchom aktualizacje. Będzie to coś w rodzaju:

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' 
... 

teraz, że zależności są up-to-date, prowadzony sp_depends:

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

późnym ale mam nadzieję, że przydatne, ponieważ zalecanym narzędziem jest wolny ...

I używa podobnego narzędzia do zalecanego przez Davida - ApexSQL Search. Twierdzą, że mają własny mechanizm śledzenia zależności, który działa we wszystkim, oprócz dynamicznego SQL.

nie testowałem go w szczegółach, aby potwierdzić to mimo ...

Oświadczenie: Nie jestem związany z tą firmą, ale ja często wykorzystują swoje narzędzia.

Powiązane problemy