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 🙂