[PL] Intellisense, nowe funkcje - tajemnice (?) Katmai CTP5
Co może nam dać Intellisense w SQL Server Management Studio (SSMS) w Katmai? Zasadniczo nie jestem zwolennikiem podpowiadania składni w języku T-SQL. Wynika to z prostej przyczyny - język ten jest na tyle elastyczny i niedoprecyzowany, że zbudowanie dobrego mechanizmu podpowiadania składni wydaje się być dość trudnym, jeśli nie niemożliwym, zadaniem. Microsoft podjął jednak rękawicę i w November CTP zobaczyliśmy pierwszą odsłonę Intellisense w SSMS. Pierwszy kontakt z tym mechanizmem sugeruje, że cała sprawa jest w powijakach i wymaga jeszcze sporego nakładu pracy, choćby po to, by zniknęły trudne do wyjaśnienia błędy wyświetlane przez Intellisense w Katmai. Ale już teraz jest jedna korzyść płynąca z obecności Intellisense w CTP5. Otóż...
Intellisense w obecnej postaci pozwala między innymi na przejrzenie listy nowych funkcji w Katmai. Listy takiej brakuje w Books Online (BOL). A nowych funkcji jest całkiem sporo. Przeglądając je, zauważyłem, że można je podzielić na pewne kategorie:
- funkcje, które są opisane w BOL i są listowane w Intellisense,
- funkcje, które są opisane w BOL i nie są listowane w Intellisense,
- funkcje, których nie ma w BOL, ale działają (lub udają, że działąją) i są w Intellisense,
- funkcje, których nie ma w BOL, są w Intellisense, ale przy próbie ich użycia pojawia się komunikat błędu o numerze 195.
Przykładem funkcji należącej do pierwszej kategorii jest funkcja CONNECTIONPROPERTY . Funkcja ta, jak wskazuje nazwa, służy do zwracania metadanych wybranego połączenia. Niestety, funkcja ta zwraca tylko informacje o połączeniu, w ramach którego jest uruchamiana.
Przykładem funkcji należącej do drugiej kategorii jest ORIGINAL_DB_NAME. Funkcja ta zwraca w niektórych przypadkach bazę danych, do której podłączył się użytkownik zaraz po udanym zalogowaniu do instancji. Napisałem, że funkcja działa w niektórych przypadkach. Owszem - niektórych, ponieważ żeby ta funkcja cokolwiek zwróciła, przy łączeniu z instancją SQL Server musi zostać jawnie podana baza danych (czyli np. musi zostać użyty przełącznik -d narzędzia SQLCMD czy też w opcjach okna połączenia w SSMS musi zostać określona baza danych). To niestety zmniejsza IMHO przydatność tej funkcji.
Przykładem funkcji z trzeciej kategorii jest DEFAULT_DOMAIN. W moim przypadku funkcja zwróciła nazwę domeny, w jakiej znajdowała się maszyna. Funkcji tej faktycznie brakuje w BOL, choć z powodzeniem można jej używać już na SQL Server 2005.
Wreszcie ostatnia kategoria - funkcje, które istnieją tylko w podpowiedziach udzielanych przez Intellisense. Do najciekawszych z racji nazw należą takie "kwiatki": NORMALIZE, NORMALIZE_DENORMALIZE oraz GEN_NORM_TABLES. Czyżby przymiarka do automatu do generowania znormalizowanych tabel? A może nieopatrznie na liście znalazły się jakieś funkcje "internal", których zwykłym użyszkodnikom używać nie wolno?
Tak czy inaczej, zabawa z Intellisense w CTP5 może być interesująca. Można doszukać się nowych obiektów systemowych (są na przykład nowe DMV - choćby dla Resource Governora). Można też odkryć kilka obiektów systemowych, które istniały w poprzednich wersji, ale z racji braku jakiejkolwiek wzmianki w dokumentacji umknęły naszej uwadze. Z tego punktu widzenia Intellisense może okazać się przydatnym narzędziem do odkrywania sekretów Katmai. A jak ktoś już będzie miał dość tego mechanizmu, to po prostu go wyłączy w opcjach SSMS.