Powershell i SQL 06 – Instancje i usługi

2-Lip-2015

Administrator SQL uwielbia  życie w swoim zamkniętym SQL-owym świecie. Czasem jednak administrator musi obejrzeć swój serwer z zewnątrz. Odpowiedzieć na pytanie ile instancji jest zainstalowanych, jakie usługi w ramach tych instancji zostały wybrane albo jakie konta są przez te usługi wykorzystywane. Nowe wersje SQL nierzadko pozwalają odpytać o takie informacje z wykorzystaniem widoków (jak np select * from sys.dm_server_services) bez odczytywania informacji z rejestru. A my przyjrzymy się, jak wykonać te zadania z poziomu powershell.

Zacznijmy od czegoś prostego. Get-Service zwraca informacje o wszystkich usługach w systemie Windows. Dlaczego więc, szukając informacji o SQL nie zawęzić listy usług do tych, które zawierają w nazwie SQL:

Get-Service *sql*

Tak, to prawda. Wystarczyłoby, żeby ktoś uruchamiał własną usługę o nazwie np. SQLAudit i to polecenie też złapie tę usługę. Polecenie nie jest więc idealne, ale i tak zadziała na prawie 90% systemów. Jeśli trzeba zmienić pewne ustawienia usługi np. przestawienie usługi SQL Browser z trybu disabled na manual wykonasz poleceniem:

Set-Service sqlbrowser -StartupType Manual

a uruchomienie usługi to:

Start-Service sqlbrowser

Standardowe polecenie Get-Service nie zwraca zbyt szczegółowych informacji. Jeśli np. chcesz zobaczyć na jakim koncie pracuje usługa SQL lepiej będzie skorzystać z Get-WMIObject. Poniższe polecenie zwraca dość szczegółowe informacje o każdej usłudze, która w nazwie zawiera SQL:

Get-WmiObject -Class Win32_Service | where { $_.name -match ‚sql’ } | Format-List -Property *

Jednak od czego mamy SMO? Załadujmy najpierw niezbędne biblioteki i utwórzmy obiekt typu ManagedComputer:

[reflection.assembly]::LoadWithPartialName(„Microsoft.SqlServer.SqlWmiManagement”)

$mc = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer localhost

A teraz pora na fantastyczne odpowiedzi. Jakie instancje są zainstalowane?

$mc.ServerInstances

instancesJakie usługi składają się na instancje SQL?

$mc.Services

services

 

Prosto łatwo i przyjemnie. Tak ma być.

 

Dodaj komentarz:

Autor: Rafał Kraik