2010-09-25 11 views
6

Jestem pewien, że zostały one wcześniej zadane, ale nie można znaleźć jasnych instrukcji, jak utworzyć plik wsadowy , można go nazwać "Aktualizuj bazę danych "ten plik wsadowy powinienPotrzebujesz pomocy przy pisaniu pliku nietoperza, który uruchamia skrypty sql w (serwer sql 2008 i kolejne 3 pliki.?

Wykonywanie skryptów sQL znajdujących się w różnych folderach Wykonaj kolejne pliki 3 bat.

jakichkolwiek głęboko przykłady jak to zrobić? Nigdy tego nie robiłem dzięki dużo

ZREDAGOWANE

Czy mogę to zrobić?

:On Error exit 

:r C:\myPath\MasterUpdateDatabase.bat 
GO 
SQLCMD -S (Local) -i C:\myPath\InsertUsername.sql 

pojawia się błąd:

"GO" is not recognized as internal external command

Dzięki za wejście

+0

Mówisz nam, co realizowane i błąd, ale nie ** jak to zrobiłeś **. –

+0

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

Odpowiedz

4

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.

1

Rzeczywistym błędem, który widzisz, jest to, że interpreter wiersza poleceń nie rozpoznaje "GO", więc możesz po prostu usunąć ten wiersz.

0

Nadzieja to pomaga:

sqlplus UserName/[email protected] @C:\myPath\InsertUsername.sql 

P.S: Nie zapomnij dodać polecenia "commit"; na końcu pliku sql (InsertUsername.sql), to kolejność poleceń wykonywanych Oracle, aby zapisać zmiany w darabase

-1

Ta odpowiedź zdecydowanie działa dla swoich celów:

sqlcmd -S localhost -U fdmsusr -P fdmsamho -i "E:\brantst\BranchAtt.sql" -o "E:\brantst\branchlog.txt"

+0

Co w Twojej odpowiedzi różni się od tego, co już wypróbował pytający? –

+0

wolisz wyjaśnić, dlaczego twoja odpowiedź rozwiąże jego problem –

Powiązane problemy