DOS de commande pour l'exécution de tous SQL script dans un répertoire et sous-répertoires
J'ai besoin d'une commande DOS ou d'un batch (.chauve-souris) fichier que je peux exécuter pour exécuter tous les *.les scripts sql dans un répertoire et de ses sous-répertoires. Quelle serait la solution?
Exécutez la ligne de commande à imprimer les noms de tous les fichiers SQL dans le répertoire courant et tous les sous répertoires.
Remplacer ensuite sqlcmd <connection args> -i%f pour echo %f pour exécuter les scripts.
Espère que cette aide.
Une baisse de vote avec pas de commentaire? Comment cela peut-il être? Sérieusement, si vous n'aimez pas ma réponse, ou il ya quelque chose de mal avec elle, pouvez-vous me dire? Nous sommes tous ici pour apprendre. Il ne fonctionne pas pour moi Essayez d'utiliser des répertoires et noms de fichiers sans espaces. (il peut être utile den4b.com/?x=downloads&produit=renommeur de fichiers)
Ici vous allez. Ce fichier de lot devra exécuter tous les fichiers sql dans un répertoire et ses sous-répertoires. Il permettra également de créer un output.txt fichier avec les résultats de sorte que vous pouvez voir les erreurs et autres joyeusetés. Quelques notes sur le fichier de commandes:
[YourDatabase] est le nom de la base de données que vous souhaitez exécuter les scripts.
[YourPath] est le chemin d'accès de l'endroit où vous conservez tous les scripts.
[Nom_serveur\nom votre instance] est le nom du serveur SQL et le nom de l'instance, séparés par un '\'
Vous aurez envie de remplacer le texte après le " = " pour chaque variable avec tout ce qui est approprié pour votre serveur
Être sûr de ne PAS mettre des espaces autour de l' '='
Essayer un for boucle. Les options de cette commande ont évolué et je ne suis pas certain de la version de ms-DOS que vous utilisez, mais en supposant que DOS comprend "cmd.exe à partir de Windows XP", quelque chose comme cela pourrait fonctionner:
for/r .%f in(*.sql) do @echo %f
Ok, cela permettra d'imprimer uniquement les noms des fichiers. Je suis en supposant que vous avez déjà un programme que vous pouvez exécuter à partir de la ligne de commande à exécuter un fichier SQL, que vous pouvez utiliser à la place de echo.
Pour plus d'informations, essayez de for /?.
J'ai eu "f était inattendu en ce moment" erreur devrait être @echo %%f
Suivants obtiendront vous avez commencé
Exécutez la ligne de commande à imprimer les noms de tous les fichiers SQL dans le répertoire courant et tous les sous répertoires.
Remplacer ensuite
sqlcmd <connection args> -i%f
pourecho %f
pour exécuter les scripts.Espère que cette aide.
Il ne fonctionne pas pour moi
Essayez d'utiliser des répertoires et noms de fichiers sans espaces. (il peut être utile den4b.com/?x=downloads&produit=renommeur de fichiers)
OriginalL'auteur Binary Worrier
Ici vous allez. Ce fichier de lot devra exécuter tous les fichiers sql dans un répertoire et ses sous-répertoires. Il permettra également de créer un output.txt fichier avec les résultats de sorte que vous pouvez voir les erreurs et autres joyeusetés. Quelques notes sur le fichier de commandes:
Assurez-vous que [YourPath] a un '\' à la fin
DÉFINIR la Base de données=[YourDatabase]
ENSEMBLE ScriptsPath=[YourPath]
ENSEMBLE ServerInstance=[Nom_serveur\nom votre instance]
SI EXIST "%ScriptsPath%output.txt" del "%ScriptsPath%output.txt"
type NUL > "%ScriptsPath%output.txt"
FOR /R "%ScriptsPath%" %%G (*.sql) DO (
sqlcmd -d %de la Base de données% S %ServerInstance% i "%%G" -o "%%G.txt"
echo ..................................................................................... >> "%ScriptsPath%output.txt"
écho de l'Exécution: "%%G" >> "%ScriptsPath%output.txt"
echo ..................................................................................... >> "%ScriptsPath%output.txt"
copy "%ScriptsPath%output.txt"+"%%G.txt" "%ScriptsPath%output.txt"
del "%%G.txt"
)
SET
s assure qu'il y a une barre oblique: `SI ce N' %ScriptsPath:~-1% == "\" SET ScriptsPath=%ScriptsPath%`OriginalL'auteur alex
OriginalL'auteur Blopster75
Essayer un
for
boucle. Les options de cette commande ont évolué et je ne suis pas certain de la version de ms-DOS que vous utilisez, mais en supposant que DOS comprend "cmd.exe
à partir de Windows XP", quelque chose comme cela pourrait fonctionner:Ok, cela permettra d'imprimer uniquement les noms des fichiers. Je suis en supposant que vous avez déjà un programme que vous pouvez exécuter à partir de la ligne de commande à exécuter un fichier SQL, que vous pouvez utiliser à la place de
echo
.Pour plus d'informations, essayez de
for /?
.devrait être @echo %%f
OriginalL'auteur itub