Powershell i SQL 07 – Protokoły sieciowe

3-Lip-2015

Jedno z zadań administratora bazy danych, wykonywane zazwyczaj zaraz po zainstalowaniu SQL jest konfiguracja protokołów sieciowych. Mamy do skonfigurowania dwa rodzaje protokołów: protokoły klienckie oraz protokoły serwera. Zaczynamy od protokołów klienckich.

Oczywiście pierwszy krok to załadowanie SMO:

I właściwie już jesteśmy u celu. Obiekt managed computer pozwala na odwołanie się do kolekcji ClientProtocols. Tak sprawdzisz, które protokoły są włączone:

Jeśli chcesz sprawdzić stan jednego protokołu. Wyślij wynik poprzedniego polecenia do Where-Object, a jeśli chcesz się odwoływać do tego protokołu w swoim skrypcie zapisz wynik w zmiennej:

Tak uzyskane obiekty pozwalają na modyfikowanie ustawień klienckich protokołów sieciowych z poziomu powershell. Aby wyłączyć protokół Named Pipes posłuż się instrukcją:

Przypisanie wartości $false do właściwości IsEnabled zmienia tę właściwość tylko w zmiennej, nie na systemie. Polecenie Alter wysyła zmiany do serwera i od tej pory protokół jest rzeczywiście wyłączony. Polecenie Refresh odświeża obiekt, który sam nie śledzi możliwych zmian wykonywanych w systemie. Pora sprawdzić, czy protokół jest rzeczywiście wyłączony:

protocols

Naturalnie można pracować z protokołami jeden po drugim budując pętlę, ale to już mniej zasługa SMO, a raczej swoistego uroku powershell:

Teraz przyjrzyjmy się protokołom serwerowym. Jeśli na serwerze zainstalowano kilka instancji SQL, to dostępne protokoły konfiguruje się niezależnie dla każdej instancji. Dlatego pierwszy krok to znalezienie właściwej instancji. Instancje są przechowywane w kolekcji ServerInstances:

Załóżmy, że interesuje nas instancja domyślna. Listę instancji można przefiltrować poleceniem Where-Object i instancję MSSQLSERVER zamamiętać w zmiennej:

I właściwie protokoły są już na wyciągnięcie ręki. Zawiera je kolekcja ServerProtocols:

Aby odnaleźć ten jeden właściwy protokół posłużymy się znowu cmdletem Where-Object:

Jeśli trzeba, możesz teraz swobodnie modyfikować ustawienia tego protokołu. Tutaj wyłączamy protokół Named Pipes:

Możesz też się spotkać z bardziej złożonymi metodami pracy z protokołami. W powyższych przykładach wyświetlając protokoły sieciowe wybierałem do wyświetlenia także URN. URN nie jest zbyt przyjazny, ale jeśli mu się przyjrzeć, nie jest aż taki skompilowany. Jeśli znasz URN możesz zadziałać w następujący sposób. Najpierw utwórz obiekt ManagedComputer

Teraz utwórz obiekt typu Urn wskazujący na właściwy protokół:

A teraz korzystając z adresu zapisanego w URN i obiektu ManagedComputer pobierz interesujący cie protokół:

Zróbmy podobną czynność jak poprzednio – włączymy protokół Named Pipes

Jakby tego było mało, pracować z protokołami możesz też bez SMO, korzystając z obiektów WMI:

Tak pobierzesz informacje o protokole Named Pipes

Tak wyłączysz protokół Named Pipes:

A tak ponownie go włączysz:

Chyba nie trudne, prawda?

Dodaj komentarz:

Autor: Rafał Kraik