Czy istnieje skrypt t-sql do znalezienia tabel, które nie są używane w serwerze sql przez przechowywane procudures, widoki, funkcje, itp. Mam bazę danych, która ma 100 tabel, jeśli nie więcej i zanim pójdę upuszczając tabele, chciałem się dowiedzieć, czy istnieje skrypt, który mógłby przejść przez każdy obiekt w bazie danych i powiedzieć mi, czy są używane tabele.skrypt tsql, aby znaleźć tabele nieużywane przez procedury składowane, widoki, funkcje itp.?
Odpowiedz
Jeśli chcesz użyć skryptu, here (Listing SQL Server Object Dependencies) to bardzo dobry artykuł na temat zależności między skryptami. Używając tego, możesz utworzyć listę przywoływanych tabel. Masz listę tabel znajdujących się w bazie danych, dzięki czemu wiesz, które z nich nie są używane.
W artykule używają procedury składowanej
sp_depends. Jednak ma jedną awarię. Na przykład, jeśli masz procedurę przechowywaną, która wykorzystała tabelę "MyTable" i utworzyłeś procedurę przed utworzeniem tabeli "MyTable", nie zobaczysz tego na liście zależności. Dlatego powinieneś przeszukać tabelę pod kątem zależności, aby znaleźć
syscomments. Ale nie jest to również dokładne, ponieważ jeśli masz nazwę tabeli w komentarzu, potraktujesz ją jako zależność.
Jeśli korzystasz ze studia zarządzania, możesz kliknąć tabelę prawym przyciskiem myszy i "wyświetlić zależności".
A tu jest link do artykułu na temat jak to zrobić w TSQL, który zgaduję jest to, czego szukasz:
https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/datacenter/?p=277
Zawsze można zbudować temp tabeli/var ze wszystkimi tabelami, które mają zależności, i porównaj je ze wszystkimi tabelami, aby zobaczyć, co nie ma żadnych zależności.
O ile wiem, nie można polegać na zarządzaniu zależnościami SQL Server. Łukasz wskazał jeden z wielu problemów.
W 2005 roku odpowiednikiem starej tabeli syscomments jest sys.sql_modules.
Aby znaleźć wszystkie nazwy tabel, które nie występują w kodzie TSQL (widoki, SPS, funkcje), skorzystać z tej klauzuli:
select t.name, sys.objects.name foundin, sys.objects.type_desc
from sys.objects t
left outer join
sys.sql_modules
inner join sys.objects on sys.objects.object_id = sys.sql_modules.object_id
on sys.sql_modules.definition like '%' + t.name + '%'
where t.type = 'U'
and sys.objects.name is null
order by t.name, type_desc, foundin
Jeśli wykomentuj linię z IS stan NULL, można znaleźć wszystko wystąpienia wszystkich nazw tabel w kodzie TSQL. (bez względu na to, czy nazwa tabeli rzeczywiście odnosi się do tego stołu)
źle wypróbuj to i daj znać jak to działa. – Xaisoft
+1 Szukałem sposobu na znalezienie odniesień do tabel w widokach/procedurach i przy niewielkich modyfikacjach działa to doskonale. –
Działa to całkiem dobrze w przypadku procedur składowanych, ale trzeba rozluźnić ograniczenie t.type = 'U' do t.type IN ('U', 'P') – Roman
- 1. Jak zignorować konkretne tabele/procedury składowane/widoki w SSDT
- 2. Jak znaleźć procedury składowane według nazwy?
- 3. Jak znaleźć nieużywane tabele w SQL Server
- 4. Jak znaleźć nieużywane funkcje w projekcie PHP
- 5. MySQL: Widoki a procedury przechowywane
- 6. Procedury składowane MySql, transakcje i wycofywanie zmian
- 7. MySQL: Jak modyfikować procedury składowane atomowo?
- 8. Jak wstawiać/tworzyć procedury składowane w mySQL z PHP?
- 9. Przechowywane procedury i funkcje
- 10. Funkcje a procedury przechowywane
- 11. Jak poznać aktualizację procedury przechowywanej TSQL Wykonano
- 12. Skrypt SQL, aby znaleźć klucze obce do określonej tabeli?
- 13. Procedury składowane MySql: Jak wybrać z tabeli procedur?
- 14. JPA lewej przyłączyć znaleźć nieużywane wpisy
- 15. Czy kompilator Swift ignoruje nieużywane funkcje?
- 16. Jak zaimplementować niestandardowy RazorViewEngine, aby znaleźć widoki w niestandardowych lokalizacjach?
- 17. Czy procedury przechowywane blokują tabele/wiersze?
- 18. Znajdź nieużywane zmienne i funkcje w projekcie MATLAB-Simulink
- 19. Skrypt usuwa wszystkie tabele w HBase
- 20. Jak znaleźć nieużywane VPC na koncie AWS
- 21. Jak łatwo znaleźć nieużywane publiczne metody/właściwości
- 22. Co właściwie robi ustawienie wbudowane Xcode 5 "Nieużywane funkcje"?
- 23. Nie można znaleźć procedury składowanej, ale można ją wykonać
- 24. Element utworzony przez skrypt zawartości na stronie powodującej problem z Gmailem, Facebookiem, stackoverflow itp.
- 25. Skrypt powłoki, aby znaleźć nazwę pliku z jego ścieżki
- 26. Android: Jak znaleźć widoki według typu
- 27. narzędzie Scala, aby usunąć wszystkie nieużywane kodu
- 28. TSQL: zamówienie przez asc bez nazwy kolumny
- 29. Skrypt, aby pokazać postęp?
- 30. Tabele przestawne/tabele EPPlus
Co to jest tabela, która "nie jest używana"? Masz na myśli puste stoły? –
Nie, mam na myśli tabele, które nie są używane w procedurach przechowywanych, widokach, funkcjach itp. Załóżmy, że niedawno stworzyłem bazę danych i ma ona sto stołów, a niektóre stały się przestarzałe, ale nie jestem pewien, więc zanim idź zacząć opuszczać stoły, chcę się dowiedzieć, czy są w użyciu. Nie rozumiem, dlaczego ta kwestia została odrzucona, wydaje się bardzo ważnym i rozsądnym pytaniem. – Xaisoft
Może zmienić tytuł na "Skrypt T-SQL, aby znaleźć tabele, do których nie odwołują się przechowywane procedury, widoki i funkcje." – shufler