Имя: Пароль:
1C
 
Резервное копирование SQL базы в несколько мест
, ,
0 mzelensky
 
30.08.10
11:42
Доброго времени суток! Собственно задача сейчас стоит такая:

Имеется база 1С на SQL 2005, настроена ежедневное резервное копирование, а затем архивирование бэкапа. Архивация происходит в опеределенный каталог с дозаписью (т.е. выгрузки накапливаются, а не перезаписываются).

Сейчас руководство хочет еще + к этому сделать так, чтобы последняя выгрузка сохрангялась паралельно куда-нибудь на флешку и обновлялась каждый день (т.е. на флешке всегда хранился 1 бекап самой последней выгрузки).

ВНИМАНИЕ ВОПРОС: как это лучше организивать?!?

Делать повторно еще один план резервирования в SQL не хочется - лишняя трата времени, есть идея либо написать свою маленькую программу (скажем на Делфяке) и запускать ее по расписанию, чтобы та определяла последнюю копию и опировала файлик куда нужно, либо производить тежде самые манипуляции, но из "cmd"...вот только как в этом случае определить последнюю копию (сравнить даты) я не знаю :(

У кого какие еще варианты есть?
1 Maxus43
 
30.08.10
11:47
на флэшку? жесть. А если достанут? если воткнут 2 флэшки? если...

А вобще, напиши програмку и не парься, имхо
2 mzelensky
 
30.08.10
11:50
(1) Флешка для этого и будет предназначена...т.е. подразумевается,что она будет воткнута всегда!!! Имя у нее значит будет определено и изменяться не будет и я смогу нормально к нему обращаться!
3 mzelensky
 
30.08.10
11:50
(1) короче говоря...если в кратце...делается на всякий случай...если НАЛОГОВАЯ НАГРЯНЕТ...
4 mzelensky
 
30.08.10
11:54
Подводный камень еще заключается в том, что иногда архивирование бэкапа происходит КРИВО...т.е. архив типа создается ,но он пустой :( возможно потом что архивация начинается раньше, чем заканчивается выгрузка...пока постарался просто сделать больший интервал времени между этими операциями...но в идеале это нужно проверять программно, перед копированием на флешку!
5 Шляпентох
 
30.08.10
11:56
(4) Добавьте в job резервного копирования еще один шаг, который будет запускаться после окончания предыдущего (создания резервной копии) и будет запускать ваш скрипт..
6 Maxus43
 
30.08.10
11:57
(5) Надо после архивирования сторонней программой как я понял. Так не прокатит...
7 mzelensky
 
30.08.10
12:03
(5) архивирование происходит прогой WinRAR...она запускается из "bat" файла с указанием нужных параметров. А можно запустить этот "bat" файл прям из плана обслуживания в SQL ???
8 Maxus43
 
30.08.10
12:05
(7) естественно можно
9 mzelensky
 
30.08.10
12:06
(8) а как? я просто не вижу там такой задачи!
10 Шляпентох
 
30.08.10
12:06
(7) смотрите в BOL exec xp_cmdshell, обратите внимание на "Учетная запись-посредник для процедуры xp_cmdshell"
11 mzelensky
 
30.08.10
12:12
(10) вот нашел описание:

http://msdn.microsoft.com/ru-ru/library/ms175046.aspx

Так все это нужно прописывать в задаче "Выполнение инструкции T-SQL" ?
12 Maxus43
 
30.08.10
12:14
(11) Так точно
13 mzelensky
 
30.08.10
12:16
(12) вот нашел пример команды:

exec xp_cmdshell 'start /min D:\bat\1.bat'

Прокатит?
14 Maxus43
 
30.08.10
12:18
(13) проверяй, зачем спрашивать то? на мисте нет твоего SQL с job-ами и батниками
15 mzelensky
 
30.08.10
12:21
(14) да я по поводу синтаксиса...уже начал проверку!
16 mzelensky
 
30.08.10
12:31
Прописываю вот так:

exec xp_cmdshell 'F:\Зеленский\test.bat'

чет батник не пускается :(
17 Maxus43
 
30.08.10
12:35
Ты в (11) читал вобще?
Пример даже есть же...

EXEC xp_cmdshell 'dir *.exe';
GO

Т.е. Содержимое батника вместо 'dir *.exe' пихай
18 Шляпентох
 
30.08.10
12:36
(16) А так: exec xp_cmdshell N'F:\Зеленский\test.bat'?
С помощью sp_configure вы разрешили выполнение xp_cmdshell? По умолчанию оно выключено
19 mzelensky
 
30.08.10
12:38
(18) вот только что разрешил :) уже нашел упоминание о том ,что он выключен по умолчанию!
20 mzelensky
 
30.08.10
12:40
(17) ща ,если как в (18) не прокатит ,то попробую просто тело bat-ника вставить!
21 Maxus43
 
30.08.10
12:43
(20) да прокатит, просто по логике - зачем тебе внешние файлы, если можно встроить это в Джоб и не париться
22 mzelensky
 
30.08.10
12:44
(21)...тоже верно!!!

а что означает параметр "N" ? в (18) ?
23 mzelensky
 
30.08.10
12:48
И еще вопрос...если мне нужно сделать ряд операций, то как параметр в exec xp_cmdshell N будет выглядеть??? НУ т.е. если я буду писать:

exec xp_cmdshell N ' бла-бла
                    бла-бла2
                    бла-бла3 ';

Так прокатит?!
24 Шляпентох
 
30.08.10
12:50
(23) Ну проверьте вы.. Делов-то..
N перед кавычкой означает, что в кавычках юникод, без нее в некоторых случаях могут неправильно обрабатываться символы, отличные от латинских
25 mzelensky
 
30.08.10
12:54
чет не прокатывает..

в батнике прописано:

mkdir "TEST"

Если просто его запускаю, то папочка нормально создается.

Создаю новый план обслуживаия, там создаю задачу "Выполнение инструкций Т-СКЛ" в инструкции пишу:

exec xp_cmdshell 'F:\Зеленский\test.bat';

выполняю план...пишит ,что все нормально выполнено, но ПАПКИ НЕТ :(
26 Шляпентох
 
30.08.10
13:00
(25) Если просто выполнить exec xp_cmdshell 'F:\Зеленский\test.bat' - папка создастся? Если прописать в батнике mkdir "D:\TEST" - создастся?
27 mzelensky
 
30.08.10
13:00
нашел ошибку!!!
28 Maxus43
 
30.08.10
13:01
(27) Молодец! Возьми пряник с полки
29 mzelensky
 
30.08.10
13:02
я прописывал " mkdir "TEST" " расчитывая, что папка будет создаваться в том же каталоге, где лежит испоняемый файл...а папка создавалась в "Windows\system32\" :)

(28) спасибо за пряник!
30 mzelensky
 
30.08.10
13:25
А еще вопрос!

Если я запускаю таким образом задачу, которая выполняется продолжительное время...а после этой задачи идет следующая, то как поведет себя SQL планировщие, он дождется завершения перволй задачи перед выполнением второй или нет?
31 Шляпентох
 
30.08.10
13:28
(30) Разные job'ы выполняются независимо друг от друга, шаги job'ов последовательно
32 mzelensky
 
30.08.10
13:31
(31) замечательно!!! СПАСИБО!!!
AdBlock убивает бесплатный контент. 1Сергей