Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 вопрос про параллельный запуск процедур  [new]
denis_viktorovich
Member

Откуда: Екб
Сообщений: 1130
Доброго времени суток. Вопрос вот в чем, у меня есть некая таблица с заданиями, мне надо гдето раз в 10-15 минут запускать хранимку, которая находит невыполненное задание, ставит по нему признак и запускает отчет. Запускать поочередно - неудобно. Одно задание может на час затянуться а остальные по 5 минут.
Пробую вот что:
1. Service Broker - все отлично на тестовой, но база боевая OLTP и мне надо ждать наверное выходных, чтобы выполнить "SET ENABLE_BROKER with rollback IMMEDIATE; " и не огрести.

2. Нашел себе вариант - создаю джоб с временем запуска +15 минут и свойством "Удалить после окончания."

Вариант № 2 с многократным созданием и удалением джоба чреват какими то проблемами в будущем (переполнение какихто логов, счетчиков)?

P.S. Microsoft SQL Server 2008 R2 (SP3)
20 ноя 18, 10:04    [21738752]     Ответить | Цитировать Сообщить модератору
 Re: вопрос про параллельный запуск процедур  [new]
Serп
Member

Откуда:
Сообщений: 12
denis_viktorovich,

мб, по джобу без шедулера на каждое задание и отдельный джоб, который с требуемой периодичностью по вашей логике будет запускать один из джобов-заданий, проверяя предварительно, что оно не запущено?
20 ноя 18, 10:28    [21738774]     Ответить | Цитировать Сообщить модератору
 Re: вопрос про параллельный запуск процедур  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 5671
denis_viktorovich,

Если есть решение на брокере, его и используйте. Динамические джобы это костыль, хотя и частый: один джоб создаёт новые, ну и обрабатывать отвалившиеся джобы + котнроль выполнения...
20 ноя 18, 10:29    [21738776]     Ответить | Цитировать Сообщить модератору
 Re: вопрос про параллельный запуск процедур  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 5671
denis_viktorovich,

а, ещё вариант 2-20(по нужным потокам) джобов которые выхватывают задачу, но надо внимательно контролировать параллельный отбор
20 ноя 18, 10:31    [21738780]     Ответить | Цитировать Сообщить модератору
 Re: вопрос про параллельный запуск процедур  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 35825
http://www.sqlnotes.info/category/parallel-task-scheduling/
20 ноя 18, 10:35    [21738790]     Ответить | Цитировать Сообщить модератору
 Re: вопрос про параллельный запуск процедур  [new]
denis_viktorovich
Member

Откуда: Екб
Сообщений: 1130
Serп,

Мне как раз не хочется, чтобы следующая задача запускалась только после завершения текущей. Хотелось бы некоей параллельности.
20 ноя 18, 11:49    [21738868]     Ответить | Цитировать Сообщить модератору
 Re: вопрос про параллельный запуск процедур  [new]
Serп
Member

Откуда:
Сообщений: 12
denis_viktorovich,

так следующая и запустится, это же другой джоб, не запустится эта еще раз, если соответствующий джоб еще работает.
20 ноя 18, 12:06    [21738894]     Ответить | Цитировать Сообщить модератору
 Re: вопрос про параллельный запуск процедур  [new]
denis_viktorovich
Member

Откуда: Екб
Сообщений: 1130
Serп
denis_viktorovich,

так следующая и запустится, это же другой джоб, не запустится эта еще раз, если соответствующий джоб еще работает.


Задания это некие заявки на обработку, они лежат в таблице и имеют статус не запущено/запущено/выполнено, их может быть сотня, а может не быть совсем. В этом плане брокер наверное имеет преимущество, т.к. там можно ограничить кол-во запусков.
20 ноя 18, 12:16    [21738921]     Ответить | Цитировать Сообщить модератору
 Re: вопрос про параллельный запуск процедур  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 5951
denis_viktorovich,

сервис брокер или внешнее приложение-запускатель.
20 ноя 18, 12:54    [21738992]     Ответить | Цитировать Сообщить модератору
 Re: вопрос про параллельный запуск процедур  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2897
denis_viktorovich
Доброго времени суток. Вопрос вот в чем, у меня есть некая таблица с заданиями, мне надо гдето раз в 10-15 минут запускать хранимку, которая находит невыполненное задание, ставит по нему признак и запускает отчет. Запускать поочередно - неудобно. Одно задание может на час затянуться а остальные по 5 минут.
Пробую вот что:
1. Service Broker - все отлично на тестовой, но база боевая OLTP и мне надо ждать наверное выходных, чтобы выполнить "SET ENABLE_BROKER with rollback IMMEDIATE; " и не огрести.

2. Нашел себе вариант - создаю джоб с временем запуска +15 минут и свойством "Удалить после окончания."

Вариант № 2 с многократным созданием и удалением джоба чреват какими то проблемами в будущем (переполнение какихто логов, счетчиков)?

P.S. Microsoft SQL Server 2008 R2 (SP3)


возможно подойдет такое решение.
Сделать джоб с шагом типа "Операционная система"
и там уже запукасть ХП

пример
start sqlcmd -S(LOCAL) -E -dmaster -o"c:\1.in" -f1251 -Q"select getdate(); waitfor delay '00:01:00' " -h-1
start sqlcmd -S(LOCAL) -E -dmaster -o"c:\2.in" -f1251 -Q"select getdate(); waitfor delay '00:01:00' " -h-1
start sqlcmd -S(LOCAL) -E -dmaster -o"c:\3.in" -f1251 -Q"select getdate(); waitfor delay '00:01:00' " -h-1


и каждый раз в джобе менять описание шага
20 ноя 18, 13:10    [21739023]     Ответить | Цитировать Сообщить модератору
 Re: вопрос про параллельный запуск процедур  [new]
denis_viktorovich
Member

Откуда: Екб
Сообщений: 1130
TaPaK,

Да, на брокере было бы лучше всего, но пока пришлось сделать с костылями в виде само уничтожающегося джоба.

Свойства базы я в нерабочее время поменял, брокер заработал. Процедура запускается под выделенным для этого пользователем (особенность системы). Новая проблема в том в том, что процедура, которую я запускаю каждые 10 мин запускает также хранимки из Оракла (получает данные) через линкованый сервер, и в этот момент я стабильно получаю ошибку
"Access to the remote server is denied because the current security context is not trusted.", гугл подсказывает параметр базы Trustworthy,
но насколько я понял это некая дыра в безопасности и моветон.
21 ноя 18, 09:49    [21739711]     Ответить | Цитировать Сообщить модератору
 Re: вопрос про параллельный запуск процедур  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 5671
denis_viktorovich,

https://blogs.msdn.microsoft.com/deepakbi/2010/03/02/job-fails-on-linked-server-access-to-the-remote-server-is-denied-because-the-current-security-context-is-not-trusted-sqlstate-42000-error-15274/
21 ноя 18, 09:52    [21739717]     Ответить | Цитировать Сообщить модератору
 Re: вопрос про параллельный запуск процедур  [new]
denis_viktorovich
Member

Откуда: Екб
Сообщений: 1130
TaPaK
denis_viktorovich,

https://blogs.msdn.microsoft.com/deepakbi/2010/03/02/job-fails-on-linked-server-access-to-the-remote-server-is-denied-because-the-current-security-context-is-not-trusted-sqlstate-42000-error-15274/


Хм, не совсем понял. В варианте с Service Broker внутри джоба я ведь только шлю сообщение очереди. Запускает процу служба сервис брокера.
21 ноя 18, 11:54    [21739869]     Ответить | Цитировать Сообщить модератору
 Re: вопрос про параллельный запуск процедур  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 5671
denis_viktorovich
TaPaK
denis_viktorovich,

https://blogs.msdn.microsoft.com/deepakbi/2010/03/02/job-fails-on-linked-server-access-to-the-remote-server-is-denied-because-the-current-security-context-is-not-trusted-sqlstate-42000-error-15274/


Хм, не совсем понял. В варианте с Service Broker внутри джоба я ведь только шлю сообщение очереди. Запускает процу служба сервис брокера.

автор
ранимки из Оракла (получает данные) через линкованый сервер, и в этот момент я стабильно получаю ошибку
21 ноя 18, 11:57    [21739877]     Ответить | Цитировать Сообщить модератору
 Re: вопрос про параллельный запуск процедур  [new]
invm
Member

Откуда: Москва
Сообщений: 8203
denis_viktorovich,

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/37a31f3b-a0dc-4b55-84c8-943e4a72d307/distributed-query-failing-in-sp-invoked-by-service-broker-activation?forum=sqlservicebroker
21 ноя 18, 12:13    [21739906]     Ответить | Цитировать Сообщить модератору
 Re: вопрос про параллельный запуск процедур  [new]
denis_viktorovich
Member

Откуда: Екб
Сообщений: 1130
invm,

Спасибо, там тоже про Trustworthy. После дальнейшего гугления на тему, я понял, что в основном это чревато тем, что имея dbo на базу, есть возможность выполнить код с правами SA. Собственно везде пишут, что лучше бы его не включать. Но как без него обойтись в данной ситуации - непонятно.
21 ноя 18, 16:32    [21740330]     Ответить | Цитировать Сообщить модератору
 Re: вопрос про параллельный запуск процедур  [new]
invm
Member

Откуда: Москва
Сообщений: 8203
denis_viktorovich
Но как без него обойтись в данной ситуации - непонятно.
Подписать процедуру активации сертификатом.
21 ноя 18, 17:12    [21740366]     Ответить | Цитировать Сообщить модератору
 Re: вопрос про параллельный запуск процедур  [new]
Igor.Ko
Member

Откуда: Киев
Сообщений: 39
Зачем городить этот огород. Используйте SSIS там Вам будет параллельность и контроль.
5 дек 18, 18:49    [21754842]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить