SQL Server: Wynik zapytania SQL do pliku

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.