2016-08-23 4 views
2

Ich bin sehr grün mit Batch Scripting, aber da mein Client die Verwendung von SSIS nicht erlaubt, ist dies das einzige Werkzeug, das ich jetzt wenden kann ...Wie rufe ich eine gespeicherte Prozedur für jede Datei in einem Verzeichnis als Parameter auf?

Ich habe einen Ordner von flachen Dateien, und ich möchte eine gespeicherte Prozedur für jede Datei aufrufen.

Ich kann die Dateien durchlaufen, und ich kann sqlcmd aufrufen, aber ich kann nicht herausfinden, wie Sie den Namen der Datei an die gespeicherte Prozedur übergeben.

Hier ist, was ich habe:

pushd D:\test 
for /F "delims=" %%i IN ('dir /b') do sqlcmd -S servername -U username -P pword -Q "EXEC db.schema.sp $(the_filename)" -v the_filename = %%i 
popd 

Aber ich erhalte eine Fehlermeldung: falsche Syntax in der Nähe von '%'

Was ist die korrekte Syntax?

+3

Entfernen Sie die Leerzeichen um '=', siehe Beispiele am Ende der [Dokumentationsseite] (https://msdn.microsoft.com/en-us/library/ms162773.aspx): '-v the_filename =" %% i "' – wOxxOm

+0

@wOxxOm Diese Änderung hat den Syntaxfehler leider nicht beseitigt. – confusedKid

Antwort

1

Try this:

pushd D:\test 
for /F "delims=" %%i IN ('dir /b') do (
    sqlcmd -S servername -U username -P pword -Q "EXEC db.schema.sp '%%i'" 
) 
popd 

Die Klammern sind nicht erforderlich, aber Ich mag sie für mehr Klarheit verwenden.

Verwandte Themen