Od czasu do czasu administrator lub programista musi nieco posprzątać w swojej bazie danych. Sprzątanie może polegać na usunięciu tabel, które nie są już potrzebne, w których kiedyś ktoś planował przechowywać jakieś dane, ale się rozmyślił i zostają osierocone, nieużywane tabele. Wykonanie polecenia DROP jest proste, szybkie i przyjemne, ale przed usuwaniem warto sprawdzić, czy tabela nie jest wykorzystywana w widokach, procedurach i funkcjach.
Jeżeli inne obiekty były tworzone z wykorzystaniem opcji with SCHEMA_BINDING, to zadanie jest proste, bo sama próba usunięcia obiektu, do którego odwołują się inne obiekty skończy się błędem. Gorzej jeśli ta opcja nie była wykorzystywana, ale i tak masz na to rozwiązanie.
Oto przykład jaki rozważymy:
use tempdb go create table myTab (id int) go create view myView as select id from myTab go create procedure myProcedure as select id from myTab go create function myFunction() returns table return select id from myTab go
żeby sprawdzić, czy istnieją obiekty odwołujące się do MyTab wykonaj zapytanie:
SELECT object_name(referencing_id), * FROM sys.sql_expression_dependencies WHERE referenced_id = OBJECT_ID(N'dbo.myTab') go
Oto wynik:
taki test można też wykonać z GUI w SSMS. Kliknij na tabeli prawym przyciskiem myszy i z menu wybierz „View dependecies”: