Такой вопрос.
Если батник, который выполняет копирование бэкапов баз и развертывание их в тестовую базу.
Нужно писать лог ошибок при восстановлении бэкапа, сейчас это реализовано таким образом:
В цикле 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
)
(6) Сейчас примерно так и работает;
...r0 2>E:\RestoreLogs\!NameFile!Error.log...
Переменная !NameFile! - название файла бэкапа.
То есть на каждый бэкап создается по 2 файла, и не хочется потом их все разгребать.
И потом еще есть мысль отправлять файл с ошибками на почту, для анализа.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс