SQL: Uzyskiwanie nazwy instancji SQL w job SQL Agent

25-Kwi-2019

Największą trudnością w automatyzowaniu administracji jest takie napisanie skryptu, które pozwoli uruchamiać dany skrypt w dowolnym środowisku bez modyfikacji.

Tym razem napisałem skrypt w powershellu, który można uruchamiać w jobie SQL Agent. Jedno z zadań tego skryptu było podłączenie się do BIEŻĄCEJ instancji SQL i wykonanie update na tabeli. Po cichu założyłem sobie, że kiedy agent uruchamia job typu powershell i wykonuje polecenie:

Invoke-SQLCmd $query

to połączenie zostanie wykonane do BIEŻĄCEJ instancji. Niestety. Połaczenie było wykonywane do DOMYŚLNEJ instancji. Kiedy więc mój skrypt uruchomił się na instancji nazwanej – dochodziło do błędu Login Failed…

Jest na to rada. Można korzystać z dostępnych zmiennych. W skrypcie powershell dodałem na początku:

$serverInstance = "$(ESCAPE_DQUOTE(SRVR))"

a potem wykonując update na bazie danych:

Invoke-SQLCmd $query -ServerInstance $serverinstance

I znowu wszystko się udało 🙂

Dodaj komentarz:

Autor: Rafał Kraik