Uruchom plik SQL

Dłuższe skrypty SQL mam w zwyczaju pisać w zwykłym edytorze tekstowym a nie w dedykowanym narzędziu – w przypadku używanego w pracy SQL Servera 2000 jest to Query Analyzer (QA) [w późniejszych wersjach zintegrowany w SQL Server Management Studio (SSMS)]. Powodów jest kilka – choćby przyzwyczajenie do skrótów klawiszowych czy makr. Przyjąłem też zasadę, że pisząc kod procedur składowanych trzymam każdą z nich w oddzielnym pliku. Wszystko jest fajnie dopóki nie trzeba wprowadzić zmian w kilku procedurach jednocześnie i potem zsynchronizować je między środowiskiem testowym i produkcyjnym. Standardowe podejście to ręczne wczytanie i uruchomienie pliku z poziomu QA, ale przy -nastu plikach jest to męczące. Jak to zautomatyzować?

Z pomocą przychodzi proste narzędzie osql (dla SQL Server 2000) lub sqlcmd (SQL Server 2005, 2008) odpalane z poziomu konsoli. Nie będę tu opisywał wszystkich opcji, bo to świetnie jest udokumentowane, a do tego można przeczytać po polsku co i jak robić krok po kroku dla polecenia sqlcmd:

SQL Server 2005 w linii poleceń – SQLCMD, cz. I
SQL Server 2005 w linii poleceń – SQLCMD, cz. II

W moim przypadku najprościej jest użyć:

osql -E -i e:\sql\plik.sql

-E oznacza żeby użyć połączenia zaufanego zamiast podawania użytkownika i hasła, -i to informacja że polecenia SQL znajdują się w pliku (zamiast -i można użyć znaku <). Aby uzyskany wynik wrzucić do pliku używa się przełącznika –o lub znaku >.

Aby wykonać to dla większej ilości plików naraz można zapakować to do batcha.

Uruchamianie plików SQL można też wykonać z poziomu QA/SSMS. W bazie master znajduje się procedura xp_cmdshell, która pozwala uruchomić polecenie z poziomu konsoli. Wtedy wystarczy napisać:

use master
exec xp_cmdshell ‚osql -E -i e:\sql\plik.sql’

lub z poziomu obecnie używanej bazy:

exec master..xp_cmdshell ‚osql -E -i e:\sql\plik.sql’

albo

exec master.dbo.xp_cmdshell ‚osql -E -i e:\sql\plik.sql’

Reklamy

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s