wygląda na to, że próbujesz użyć poleceń DOS utworzyć plik wsadowy, który (a) wykonuje inne pliki wsadowe lub (b) wykonuje SQLCMD, aby uruchomić skrypt sql lub sql.
Oto kilka przykładów wszystkich zrolowanych w jeden. Używam komendy DOS START
z przełącznikiem /WAIT
, która zachowa oryginalny plik wsadowy "główny" w jednym oknie i wykona kolejny plik lub polecenia w nowym oknie. To nowe okno pozostaje otwarte, dopóki skrypt nie zakończy się i zakończy działanie.
Niektóre z ECHO
s prawdopodobnie nie są wymagane, ale skrypt będzie teraz z tobą rozmawiać, trochę.
@echo off
Jest to bardzo proste w tym sensie, że właśnie uruchamiasz skrypt. Jeśli masz script1.bat ma punkty przerwania, możesz zwrócić błąd do głównego skryptu i natychmiast go zakończyć. Nie wiedziałem, czy to jest potrzebne do wykonania skryptu głównego.
echo Starting Database Update.
echo.
echo Excuting Script 1
echo.
start /wait C:\path\to\your\script1.bat
echo If there was a problem, break here.
Pause
echo Excuting Script 2
echo.
start /wait C:\path\to\your\script2.bat
echo If there was a problem, break here.
Pause
Oto skąd stosować ten sam START/WAIT uruchomić sqlcmd, które w tym przypadku po prostu zwraca wyników z zapytania. Należy tutaj zwrócić uwagę, że -Q
(wielkie litery) uruchamia zapytanie i kończy działanie. Jeśli użyjesz -q
(małe litery), uruchomi zapytanie i pozostanie otwarte w SQLCMD czekając na kolejne zapytanie.
echo.
echo Running SQLCMD: "select top 100 * from sys.objects"
start /wait sqlcmd -S (local) -Q "select top 100 * from sys.objects"
A to w jaki sposób można uruchomić skrypt SQL, który jest co -i
oznacza, ale również nie uruchomić to w START/WAIT jak wcześniej. Nie, że musisz, ale chciałem pokazać oba przykłady. To, co to również pokazuje, to koniec procesu wsadowego, jeśli skrypt zwróci błąd, co jest przydatne, jeśli uruchamiasz wiele skryptów zależnych od sukcesu poprzednich.
echo.
echo Running SQLCMD from an (-i)nput file:
sqlcmd -S (local) -i C:\path\to\your\script.sql -b
echo.
echo Update Complete.
pause
End
Tak, zakładałem, że szukasz pliku .bat lub .cmd, który wykorzystał SQLCMD. Podany przeze mnie przykład jest dość prosty, ale mam nadzieję, że ustawi cię na właściwej ścieżce.
OH! Pamiętaj, że CTRL + C powoduje przerwanie skryptu wsadowego.
Mówisz nam, co realizowane i błąd, ale nie ** jak to zrobiłeś **. –
Wygląda na to, że traktujesz skrypt wsadowy jak zapytanie SQL. Składnia jest zupełnie inna. ": R" to twoja funkcja, która wywołuje tylko plik wsadowy. "GO" jest niepotrzebne. Prawdopodobnie istnieje bardziej przejrzysty sposób tworzenia błędów i wywoływania wielu poleceń. Z wywołania pliku wsadowego prawdopodobnie użyjesz "START/WAIT", aby oryginalny plik wsadowy nie zakończył się przed wywołanym z niego plikiem. Czy możesz dodawać dodatkowe szczegóły? – Vinnie