Zmodyfikowałem centralną tabelę w mojej bazie danych, a sp_depends dosłownie zwraca setki wyników, i obawiam się, że niektóre z tych procedur przechowywanych mogą się nie kompilować po mojej zmianie.
Sprawdzanie jednej procedury składowanej jest łatwe (po prostu ponownie uruchamiam skrypt alter i sprawdzam, czy operacja się powiodła), ale robienie tego na ponad 100 procedurach jest nieco kłopotliwe.
Wiem, że mogę użyć skryptu takiego jak ten, aby ponownie skompilować wszystkie obiekty mojej bazy danych, ale faktyczna operacja odbędzie się następnym razem, gdy procedura składowana zostanie wykonana, nie natychmiast, więc w moim przypadku nie wydaje się to właściwe.
Myślałem również, że mogę całkowicie usunąć wszystkie procedury składowane i ponownie zhomonizować moją bazę danych za pomocą mojego systemu kontroli źródła, ale ta opcja, choć wykonalna, nie jest zbyt elegancka. Czy jest na to lepszy sposób?
Używam SQLServer 2008 R2, a moje skrypty bazy danych są przechowywane w projekcie bazy danych VS 2008.
Aby to wyjaśnić, nie zalecam, aby polegać wyłącznie na tym podejściu do kodu testowego. Dokładnie tak jak w c # natychmiast wykrywasz błąd składniowy w innych zależnych plikach podczas kodowania (a następnie używasz innych strategii do testowania, takich jak testy jednostkowe, które zwykle są o kilka rzędów wielkości wolniejsze), myślę, że sensowne byłoby wykrycie zależności SQL błędy w sekundach zamiast przeprowadzania pełnego testu funkcjonalnego, który zwykle zajmuje kilka godzin.
Jest to obejście, ale możesz wygenerować skrypty UTWÓRZ PROCEDURĘ dla bazy danych (baza danych prawym przyciskiem myszy -> zadania -> wygeneruj skrypty), znaleźć i zastąpić UTWÓRZ PROCEDURĘ ALTER PROCEDURE, a następnie parsować.
Mam nadzieję, że uzyskasz lepszą odpowiedź tutaj - ja też jestem zainteresowany! :)
źródło
Możesz użyć narzędzia Sql Server Data Tools (SSDT). Microsoft Visual Studio umożliwia utworzenie projektu Sql Server. Następnie importuje się bazę danych do projektu, a następnie buduje projekt. Jeśli są jakieś uszkodzone procedury składowane lub obiekty, pojawi się błąd kompilacji.
źródło
Być może warto przyjrzeć się temu pytaniu SO. Szukam niezawodnego sposobu weryfikacji procedur przechowywanych T-SQL. Czy ktoś go ma? który pyta zasadniczo o to samo, z kilkoma odpowiedziami.
Aby zbudować na podstawie skryptu opublikowanego przez Alaa Awada ... powinien on pokazywać schemat i bazę danych obiektów odniesienia i odniesienia. Jeśli używasz wielu tabel temp za pośrednictwem aliasów (które czasami pojawiają się podczas używania
sys.sql_expression_dependencies
), parametrów UDTT lub innych dynamicznych funkcji, może być konieczne użycie funkcjisys.dm_sql_referenced_entities
lubsys.dm_sql_referencing_entities
zamiast / też.źródło
użyj sys.sql_expression_dependencies dodanych w SQL Server 2008
źródło