Dwa w jednym

Dziś poznamy dwa tricki SQL-owe w jednym. Obydwa są raczej banalne i raczej mało przydatne przy codziennej pracy, ale od czasu do czasu mogą sie jednak przydać – zwłaszcza w połączeniu.

Od razu też uprzedzam: dla starych wyjadaczy ten wpis będzie nudny jak flaki z olejem. Nie ma w nim niczego odkrywczego. Ale ponieważ mi się ta technika niedawno przydała, zakładam, że równie dobrze może się przydać komuś innemu…

Otóż wyobraźmy sobie następującą sytuację: mamy multum baz danych na serwerze SQL (MS SQL Server) i nagle okazuje się, że musimy masowo podmienić jakiś tekst w definicjach wszystkich obiektów (procedury, funkcje, triggery itd) na jakiś inny.

A czemu tak? Bo tak, przyczyn może być wiele. Na przykład zmieniła się nazwa sieciowa jakiegoś serwera, który jest zakodowany na twardo w niektórych procedurach, albo zmieniła się nazwa jakiejś bazy danych, do której odwołują się obiekty z innych baz. Albo cokolwiek innego. Tak czy siak, nadchodzi moment, że musimy wyszukać wszystkie obiekty zawierające (w swojej definicji) dany tekst i zamienić ten tekst na inny.

Jak się do tego zabrać?

W sukurs przychodzą nam dwa zupełnie niezależne od siebie narzędzia:

1. ApexSQL
2. Okno / zakładka “Object Explorer Details” w SQL Server Management Studio.

Kolejność działań jest następująca (zakładam, że ApexSQL jest już zainstalowany):

1. Włączamy okienko “Object Explorer Details” (klawisz F7)
2. Wyszukujemy wszystkie obiekty z tekstem, który ma być podmieniony, za pomocą ApexSQL.
3. Sortujemy je wg typu.
4. Dla każdego typu obiektu / bazy danych klikamy rodzica tego obiektu w drzewku Eksploratora (na przykład jeżeli obiekt jest procedurą, klikamy w “Stored Procedures” itd.).
5. W okienku Object Explorer Details, przytrymując klawisz Ctrl, zaznaczamy wzsystkie obiekty odnalezione przez ApexSQL dla tej bazy.
6. Prawomysz -> Script object as -> DROP and CREATE To -> New Query Editor Window
7. Ctrl-H, zamieniamy wszystkie wystąpienia tekstu na nowe
8. F5
9. Zamykamy okienko (albo zapisujemy je dla potomności, jeżeli zachodzi taka potrzeba)
10. Powtarzamy kroki 4-9 dla wszystkich pozostałych baz danych / typów obiektów.
11. Gotowe!

Jest to w dalszym ciągu dość żmudne przedsięwzięcie, ale – zapewniam – o wiele szybsze, niż praca na pojedynczych obiektach.

Na czym polega trick?

Po pierwsze na tym, że ApexSQL jest bardzo szybki i skuteczny w przeszukiwaniu definicji obiektów, a po drugie, okienko Object Explorer Details – w odróżnieniu od drzewka Eksploratora – umożliwia zaznaczenie wielu obiektów na raz, dzięki czemu możemy przeprowadzić operację masową, a nie na pojedynczych obiektach.

Nawiasem mówiąc jest to jedyne sensowne zastosowanie tego okienka, jakie znam… Zazwyczaj pierwsza rzecz, którą robię zaraz po uruchomieniu SSMS, to wyłączenie tego okna.

Wspominałem już, że będzie nudno?

No to już – na szczęście – koniec.


Liczba słów w tym wpisie: 482

Sprawdź też

Pchełki Powershell: odzyskujemy klucz aktywacyjny do Windows 10

Niedawno zachciało mi się na jednym z domowych laptopów przetestować Docker for Windows. Niektóre opcje …

Linuks, find, jak pozbyć się komunikatu “Permission denied”

Linuksowa komenda find jest dość potężna: potrafi nie tylko przeszukiwać foldery, ale również wykonywać dowolne …

Zapisz się
Powiadom o
guest
1 Komentarz
Inline Feedbacks
Zobacz wszystkie komentarze
1
0
Zapraszam do skomentowania wpisu.x
()
x