piątek, 2 sierpnia 2013

SSMScripter - "Go to definition" dla SQL Management Studio 2012

Tak się złożyło, że ostatnio dużo czasu w pracy spędzam nad MS SQL z wykorzystaniem SQL Management Studio 2012 i czuję mały niedosyt. Nie mówię, że edytor jest zły czy coś, ale przeglądanie informacji w oknie "Object Explorer" przy ~100 procedurach składowanych, ~50 funkcjach i 3-4 wyzwalaczach na każdą z tabel nie należy do przyjemności (nie wspominając już o straconym czasie). Tym bardziej jeżeli wchodzi się w głąb zależności pomiędzy obiektami, szaleństwo. Może gubią mnie moje przyzwyczajenia z Visual Studio i komendą "Go to definition" (F12), nie wiem. Wiem na pewno, że łącząc się bezpośrednio z serwerem MS SQL to okienko "Navigate To" niewiele pomaga. Szybciej jest z SQL Search, ale to też nie do końca to. Mimo swoich nieocenionych możliwości dalej trzeba używać "Modify..." z "Object Explorer". Istnieje natomiast takie cudo jak SSMSBoost posiadające odpowiednią funkcjonalność. Niestety nie mogłem zainstalować tego w pracy, ale skoro oni mogli to ja też mogę. Postanowiłem się nieco zabawić i napisać własny plugin do Management Studio.

Tak powstał SSMScripter. Prosty dodatek umożliwiający skryptowanie obiektów bezpośrednio z edytora tekstu do nowego okna z poziomu menu kontekstowego lub właśnie skrótu F12.


Co ważne dodatek nie wywołuje standardowych metod skryptujących w jakie wyposażone jest Management Studio tylko robi to po swojemu wyciągając informacje z tabel systemowych, tzn:

  1. Sprawdź tekst pod myszką
  2. Znajdź w tekście potencjalny obiekt
  3. Spróbuj dowiedzieć się o nim jak najwięcej (typ, schema, nazwa itp)
  4. Wyciągnij z bazy jego zawartość i otwórz w nowym oknie
Proste, szybkie i nawet działa. Wszystko co potrzebne do uruchomienia dodatku znajdziecie na stronie z projektem:
https://github.com/mkoscielniak/SSMScripter

PS. jeżeli po skopiowaniu plików w odpowiednie miejsce w Management Studio 2012 nic się nie zmieniło, najprawdopodobniej oznacza to, że Windows jest za bardzo troskliwy i trzeba odblokować SSMScripter.dll w właściwościach pliku ;-)