Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
18 Дек 2017, 00:15
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Параллельное выполнение процессов в одном задании MS SQL Server Agent  (Прочитано 1543 раз)

0 Пользователей и 1 Гость просматривают эту тему.

В задании на ежедневное обслуживание MS SQL баз данных иногда возникает желаение выполнять какие-то процессы параллельно. В моем случае, хотелось одновременно с восстановление БД "минус день" (копия продуктивной БД для обучения и экспериментов) архивировать копию БД для выкладывания на FTP сервер.
Если попробовать использовать стандартную команду START, то вас будет ждать разочарование. Она из-под SQL Server Agent не работает принципиально. Однако в любой MS Windows системе всегда уже есть запущеный Windows Scripting Host. Этот процесс совершенно не зависим от SQL Server Agent. Следовательно, никакие ограничения SQL Server Agent на него не распостраняются и мы вполне можем использовать его ресурсы для порождения новых процессов.

Для этого мы создаем простенький VB Script в файле с именем, например "Run cmd async.vbs" и содержимым:
dim scmd
dim command_line_args
dim RetCode

Set WshShell = CreateObject("WScript.Shell")
set command_line_args = wscript.Arguments

scmd="cmd.exe /C CD && """&command_line_args(0)&""" """&command_line_args(1)&""" >> """&command_line_args(2)&""" 2>&1"
RetCode = WshShell.run(scmd,0,false)
Wscript.Echo scmd

В данном примере первый параметр - имя асинхронно запускаемого командного файла. Второй параметр - параметр, передаваемый этому командному файлу. Третий параметр - имя текстового файла журнала, в который мы будем сохранять протокол работы нашего командного файла.

Пусть у нас уже есть командный файл с именем "Some task.cmd", м мы можем выполнить его асинхронно. Для этого в той же директории, что и ранее созданный файл "Run cmd async.vbs" мы размещаем наш командый файл "Some task.cmd" и создаем еще один командный файл с именем "Run some task asyn.cmd" и содержимым:
@echo off
c:\windows\system32\cscript.exe //nologo "%~dp0Run cmd async.vbs" "%~dp0Some task.cmd" "%1" "%~dp0%date:~10,4%%date:~4,2%%date:~7,2% Some task.log"
exit /B 0
Для простоты примера, журнал работы командного файла размещается в той же директории, что и командый файл. На практике, лучше для журналов выделять отдельную директорию.

Вот и все. Теперь при вызове "Run some task asyn.cmd" из шага SQL Server Agent шаг моментально завершится, а параллельно продолжит выполнятся наш командый файл "Some task.cmd"

P.S. У клиента БД размером около 200 гигабайт. Встроенное сжатие формирует резервную копию размером порядка 20 гигабайт. А 7Zip при компрессии не сжатого (уже сжатый почти не сжимается!) бекапа на максимальном сжатии LZMA - всего 3-4 гигабайта. Для передачи по FTP, к тому же с Камчатки в Москву по спутниковому каналу связи, разница принципиальная. Время сжатия не значительно, так как 7Zip умеет сжимать в несколько потоков, а при наличии 48 ядер на SQL серевере это дает очень ощутимое преимущество.
Оффлайн ptr
1



 

Правила расчета налога при патентной системе, если сдается несколько помещений в одном здании по одному договору аренды

Автор newsРаздел Новости

Ответов: 0
Просмотров: 1020
Последний ответ 23 Сен 2015, 14:41
от news
Грамотное заполнение книги продаж в случае, если в одном счете-фактуре присутствуют свои товары и комиссионные

Автор newsРаздел Новости

Ответов: 0
Просмотров: 985
Последний ответ 12 Фев 2015, 19:30
от news
УТ11- В одном чеке ККМ владельцам карт лояльности товары разных сегментов по разным видам цен

Автор lsiРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 3287
Последний ответ 13 Апр 2014, 10:21
от lsi
В одном чеке ККМ владельцам карт лояльности товары разных сегментов по разным видам цен

Автор lsiРаздел Пользователям "1С - Предприятие 8"

Ответов: 0
Просмотров: 916
Последний ответ 11 Апр 2014, 20:49
от lsi
Если товар продается физическому лицу, счет-фактура составляется в одном экземпляре

Автор newsРаздел Новости

Ответов: 0
Просмотров: 1222
Последний ответ 05 Ноя 2014, 12:45
от news

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
132 Сообщений
ilyay ilyay
63 Сообщений
AIFrame
61 Сообщений
alex0402
50 Сообщений
andron81_81
44 Сообщений
oleg-x
41 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
27 Сообщений
alexandr_ll
23 Сообщений

* Кто онлайн

  • Точка Гостей: 224
  • Точка Скрытых: 0
  • Точка Пользователей: 5
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal