![]() |
|
SqlCmd - вывод ошибок выполнения скрипта в лог | ☑ | ||
---|---|---|---|---|
0
BrainDamage
12.02.16
✎
15:47
|
Такой вопрос.
Если батник, который выполняет копирование бэкапов баз и развертывание их в тестовую базу. Нужно писать лог ошибок при восстановлении бэкапа, сейчас это реализовано таким образом: В цикле for /r обхожу директорию с *.bak файлами, дальше использую sqlcmd для восстановления бэкапа, при этом создаю два файла 1. лог ошибки, 2. лог восстановления, но оба файла создаются для каждой восстанавливаемой базы. А хотелось бы дописывать логи в конец уже ранее созданного файла. Текст фрагмента скрипта такой: rem Запускаем цикл по каталогу с бэкапами for /r E:\temp\backup\ %%i in (*.bak) do ( echo %%i set TempScriptDir=%temp%\ rem задаем переменную полного пути имени файла set FullFileName=%%i Echo !FullFileName! rem задаем переменную имени файала без пути и расширения set NameFile=%%~ni Echo !NameFile! echo ********************************************************************* Rem надо изменить кодовую страницу для возможности записи логов на кириллице chcp 65001 rem запускаем скрипт восстановления текущего файла и одновременно записи в лог ошибок и результатов выполнения SqlCmd -S "SV-02" -U "sa" -P "1111111" -b -V10 -i "E:\RestoreScripts\restore.sql" -r0 2>E:\RestoreLogs\!NameFile!Error.log 1>E:\RestoreLogs\!NameFile!Restore.log -v Backupfile="'!FullFileName!'" If ERRORLEVEL 16 Set errorrestore=true rem If ERRORLEVEL 16 Goto ErrorExit ) Вот тут никак нельзя писать в один файл: SqlCmd -S "SV-02" -U "sa" -P "1111111" -b -V10 -i "E:\RestoreScripts\restore.sql" -r0 2>E:\RestoreLogs\!NameFile!Error.log 1>E:\RestoreLogs\!NameFile!Restore.log -v Backupfile="'!FullFileName!'" Или может как-нибудь по другому сделать? |
|||
1
zenik
12.02.16
✎
15:48
|
> - перезапытсывает файл
|
|||
2
zenik
12.02.16
✎
15:49
|
>> - Дописывает в конец
|
|||
3
zenik
12.02.16
✎
15:49
|
* перезаписывает
|
|||
4
zenik
12.02.16
✎
15:50
|
Видимо 2>>E и 1>>E должно помоч
|
|||
5
BrainDamage
12.02.16
✎
15:50
|
(3) пробовал, не хочет работать :(
|
|||
6
zenik
12.02.16
✎
16:01
|
Как вариант, добавь дату в имя файла - будет каждое восстановление в свой файл писать.
|
|||
7
BrainDamage
12.02.16
✎
16:07
|
(6) Сейчас примерно так и работает;
...r0 2>E:\RestoreLogs\!NameFile!Error.log... Переменная !NameFile! - название файла бэкапа. То есть на каждый бэкап создается по 2 файла, и не хочется потом их все разгребать. И потом еще есть мысль отправлять файл с ошибками на почту, для анализа. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |