![]() |
[решено] Резервное копирование файлов баз данных через команды операционной системы
Ситуация такая. W2K3 сервер - 1шт. на нем AD и выход в Интернет по ADSL, компьютеров в сети - 8 шт, пользователей - 10 шт. На сервере хранятся - база данных 1С-бухгалтерия (сетевая), MS SQL - сервер и база, с которой работают менеджеры.
Задача такая - периодическое сохранение (ежесуточное) баз данных. Решение - создать copy.bat - файл, копирующий базы данных, который можно будет запускать стандартными средствами, например в 3 часа ночи (без моего участия). Вот, что у меня поучается (содержимое copy.bat): set datetemp=%date% xcopy/e/y/h/f d:\data d:\DATA_COPY\%datetemp%\ xcopy/e/y/h/f C:\PROGRA~1\MICROS~1\MSSQL\Data\master.mdf d:\DATA_COPY\%datetemp%\ Трудность - при копировании базы данных MS SQL, а именно файла master.mdf, выдается сообщение: C:\PROGRA~1\MICROS~1\MSSQL\Data\master.mdf Попытка доступа к ресурсу, занятому другим приложением Замечено - что, если в Диспетчере задач Windows убить 2 прцесса - sqlmangr.exe и sqlservr.exe - доступ к файлу master.mdf возможен, команда xcopy выполняется "на ура". (ну это понятно) Внимание вопрос :) как из командной строки "убить" работющий процесс? как потОм из командной строки "запустиь" только что убитый процесс |
А почему не делать резервное копирование средствами sql сервера?
|
Надеюсь что поможет.. сам не пробовал.. так что ты отпиши о результатах пожалуста.
1.чтобы убить порцесс можно воспоьзоваться прогой taskKill.exe или tsKill.exe из WinDir/system32/ посмотри по /? что тебе нужно. 2.Потом, по идее чтоб снова запустить процесс нужно воспользоваться командой RanAs.exe |
Цитата:
Регулярное резервное копирование реализуется средствами компонента-службы SQLServer Agent (который должен быть настроен на автозапуск). Цитата:
Подтверждение: Цитата:
Цитата:
sqlservr.exe - Это ваш сервер баз данных Microsoft SQL Server 2000 поэтому когда вы снимаете процессы эти - понятно что никтобольше блокировать базы не будет. Цитата:
напомню что снимаете вы не процессы, а работающие службы, поэтому для их управления есть специальные команды: Код:
net stop mssqlserver /y и тогда полные команды будут выглядеть так (на отключение): Код:
net stop sqlserveragent Код:
net start mssqlserver |
SkyF, и еще в дополнение хочется добавить, что при аварийном снятии задачи sql-сервера(а желаемое снятие задачи из консоли именно оно и есть) возможна потеря данных... А даже вероятная потеря данных в торговой базе данных критична.
|
Делаешь вот такой батник и запускаешь его из шедулера сколько хочешь, у меня каждые 2 часа это делается. Тут идет полный бакап, архивирование и перенос архива
в другое хранилище (с путями разберешься сам, удачи): del \\sqlserv1\archiv\*.dat del \\sqlserv1\archiv\*.bak del \\sqlserv1\archiv\*.log "C:\Program Files\Microsoft SQL Server\MSSQL\Binn\SQLMAINT" -D baza1 -Rpt D:\archiv\report.log -BkUpDB D:\archiv -BkUpMedia DISK -DelBkUps 1 "C:\Program Files\Microsoft SQL Server\MSSQL\Binn\SQLMAINT" -D baza2 -Rpt D:\archiv\report.log -BkUpDB D:\archiv -BkUpMedia DISK -DelBkUps 1 "C:\Program Files\Microsoft SQL Server\MSSQL\Binn\SQLMAINT" -D baza3 -Rpt D:\archiv\report.log -BkUpDB D:\archiv -BkUpMedia DISK -DelBkUps 1 rem SQLMAINT -D msdb -Rpt D:\archiv_opt\report.log -BkUpDB D:\archiv -BkUpMedia DISK -DelBkUps 1 d: cd d:\archiv_opt ren nicol_db_*.* baza1_db_dump.dat ren master_db_*.* baza2_db_dump.dat ren stat_db_*.* baza3_db_dump.dat rem ren msdb_db_dump.* msdb_db_dump.dat start /min /wait c:\util\zip\pkzip25.exe -add=update -lev=9 -recurse -dir=full -excl=*.zip d:\archiv\tmpsqlserv1\archiv.zip \\sqlserv1\sqlserv1_d\archiv\*_db_dump.dat start /min /wait c:\util\zip\pkzip25.exe -add=freshen -lev=9 -recurse -dir=full -excl=*.zip d:\archiv\tmpsqlserv1\archiv.zip \\sqlserv1\sqlserv1_d\archiv\*_db_dump.dat for /f "tokens=2,3,4 delims=. " %%i in ('date /t') do mkdir d:\archiv\sql_baza_reserv\%%k%%j%%i for /f "tokens=2,3,4 delims=. " %%i in ('date /t') do xxcopy d:\archiv\tmpsqlserv1\ d:\archiv\sql_baza_reserv\%%k%%j%%i /y rem Копирование архива на другой сервер xxcopy d:\archiv\SQL_baza_RESERV \\SQLSERV\sqlserv_z\Archiv\baza /s /bx /y exit |
Время: 07:18. |
Время: 07:18.
© OSzone.net 2001-