W jaki sposób wykonać zapytanie SQL z poziomu PowerShell’a. Jak wynik takiego zapytania zapisać w pliku? Jak zrobić to cyklicznie, przykładowo do monitorowania parametrów bazy?
Zacznijmy od początku, jak wykonać polecenie SQL z użyciem PowerShell’a? Użyjemy do tego jednego z dwóch natywnych modułów wspierających MS SQL Server a mianowicie SQLPS i polecenia które wchodzi w jego skład Invoke-Sqlcmd. Polecenia użyjemy z parametrem wywołującym zapisane uprzednio w pliku polecenie SQL (zawartość pliku z poleceniem to czysty SQL sformatowany do TXT):
Wywołajmy nasze zapytanie w poniższy sposób:
Invoke-Sqlcmd -InputFile "C:\sprawdzoneit\query\query.sql"
Wynik przedstawi się nam w tym samym oknie w postaci tabeli:
Następnie skierujmy go potokiem do pliku tekstowego tak aby każdorazowo wykonanie powyższego zapytania dopisało wyniki.
Out-File -filePath "C:\sprawdzoneit\results\results.xt" -Append
Teraz połączmy dwa elementy w całość:
Invoke-Sqlcmd -InputFile "C:\sprawdzoneit\query\query.sql" | Out-File -filePath "C:\sprawdzoneit\results\results.xt" -Append
Wynik pojawi się w naszym pliku txt:
Tak przygotowanego One Liner’a zapisujemy jako plik ps1 i możemy swobodnie uruchamiać go cyklicznie (np do monitorowania parametrów instancji) z użyciem Task Schedulera. Robiliśmy to w naszym wpisie o zadaniu usuwania plików.