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

Откуда:
Сообщений: 81
Всем привет!
Несколько дней назад установил дома SQL Server 2012 вариант Express. Мне нужно выполнить одну очень трудоёмкую работу за максимально быстрое время. В этих случаях я всегда брал SQL Агент, ставил 20 джобов на одно время и быстренько отрабатывал задачу.

Печалька пришла нежданно: Установленная служба агента SQL Server отключена. Выпуск SQL Server<c/> который установил эту службу<c/> не поддерживает агент SQL Server. Express не поддерживает Агента.

Собственно вопрос: Можно запустить выполнение процедуры не дожидаясь окончания её работы запускать последующие команды?

Более точно, есть 800 тысяч записей по каждой нужно понять на сколько она близка по значениям столбцов с какой-нибудь записью из 100 тысяч в обучающей выборке. Поскольку близость записей определяется по отдельным подстрокам, то даже кластерный индекс по этим полям подключается не всегда (я думаю, это даже невозможно убыстрить). Осталась последняя возможность: запустить параллельно для каждого сегмента строк свою процедуру. Но как это сделать?
31 мар 13, 13:08    [14118329]     Ответить | Цитировать Сообщить модератору
 Re: Можно запустить выполнение процедуры не дожидаясь окончания её работы?  [new]
Паша Б.
Member

Откуда:
Сообщений: 81
Я думаю, что понятно, что кодом писать 20 интервалов и на 20 страницах запускать отдельный расчетный сегмент мне не интересно. Я пытаюсь придумать какой-то более цивилизованный вариант. Тем более, что логика работы столь сложна, что приходится делить на 800 интервалов и возможно больше, чтобы дождаться выполнения в течении 2-3 часов.
31 мар 13, 13:24    [14118361]     Ответить | Цитировать Сообщить модератору
 Re: Можно запустить выполнение процедуры не дожидаясь окончания её работы?  [new]
invm
Member

Откуда: Москва
Сообщений: 9724
Что мешает вместо SQL Агент задействовать Windows Task Scheduler и sqlcmd? Или обычный батник, асинхронно запускающий 20 sqlcmd?
31 мар 13, 14:16    [14118425]     Ответить | Цитировать Сообщить модератору
 Re: Можно запустить выполнение процедуры не дожидаясь окончания её работы?  [new]
Паша Б.
Member

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

научите, пожалуйста, ранее я никогда так не делал. Направьте какие-нибудь прототипы.
31 мар 13, 15:13    [14118527]     Ответить | Цитировать Сообщить модератору
 Re: Можно запустить выполнение процедуры не дожидаясь окончания её работы?  [new]
invm
Member

Откуда: Москва
Сообщений: 9724
Общие сведения о планировщике заданий
Программа sqlcmd
Start
31 мар 13, 15:25    [14118537]     Ответить | Цитировать Сообщить модератору
 Re: Можно запустить выполнение процедуры не дожидаясь окончания её работы?  [new]
Паша Б.
Member

Откуда:
Сообщений: 81
invm,
мне нужно Очень много раз запустить вот эту процедуру с разными параметрами.

sqlcmd -d TCS_passport -Q "exec [dbo].[procedure1_2013_03_31_1455] 0, 9000 "

У меня вопрос. Как мне стартануть эти файлы одноврменно???

Я пока не понял...
31 мар 13, 15:26    [14118539]     Ответить | Цитировать Сообщить модератору
 Re: Можно запустить выполнение процедуры не дожидаясь окончания её работы?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Паша Б.
У меня вопрос. Как мне стартануть эти файлы одноврменно???

Я пока не понял...

Открываете несколько command prompt
В каждом вводите свой текст команды.
И нажимаете enter
31 мар 13, 15:47    [14118567]     Ответить | Цитировать Сообщить модератору
 Re: Можно запустить выполнение процедуры не дожидаясь окончания её работы?  [new]
Паша Б.
Member

Откуда:
Сообщений: 81
Паша Б.,

не могу побороть ошибку в файле

К сообщению приложен файл. Размер - 48Kb
31 мар 13, 15:52    [14118574]     Ответить | Цитировать Сообщить модератору
 Re: Можно запустить выполнение процедуры не дожидаясь окончания её работы?  [new]
Паша Б.
Member

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

Я понял - сколько тредов (потоков) - столько и файлов.
Спасибо!
31 мар 13, 15:53    [14118575]     Ответить | Цитировать Сообщить модератору
 Re: Можно запустить выполнение процедуры не дожидаясь окончания её работы?  [new]
Паша Б.
Member

Откуда:
Сообщений: 81
помогите, пожалуйста, решить последнюю (надеюсь) проблему перед запуском мега расчета
31 мар 13, 15:59    [14118590]     Ответить | Цитировать Сообщить модератору
 Re: Можно запустить выполнение процедуры не дожидаясь окончания её работы?  [new]
invm
Member

Откуда: Москва
Сообщений: 9724
Паша Б.
У меня вопрос. Как мне стартануть эти файлы одноврменно???
Делаете командник, состоящий из необходимого числа команд
start sqlcmd ...
31 мар 13, 16:03    [14118597]     Ответить | Цитировать Сообщить модератору
 Re: Можно запустить выполнение процедуры не дожидаясь окончания её работы?  [new]
Паша Б.
Member

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

как я понимаю, все команды всё равно у ОДНОМ файле будут выполняться последовательно. Параллельно нельзя. Вот это расстраивает. То есть, придется делать много батников. Сколько батников - столько и потоков.

invm, не могли бы Вы меня по скриншоту проконсультировать? Не могу найти в сети как в на сервере разрешить удаленные подключения к серверу sql (версия 11.0.2218.0).


Studio версии:
Microsoft SQL Server Management Studio 11.0.2100.60
Компоненты доступа к данным (MDAC) 6.1.7601.17514
Microsoft MSXML 3.0 4.0 6.0
Microsoft Internet Explorer 9.0.8112.16421
Microsoft .NET Framework 4.0.30319.296
Операционная система 6.1.7601
31 мар 13, 16:10    [14118605]     Ответить | Цитировать Сообщить модератору
 Re: Можно запустить выполнение процедуры не дожидаясь окончания её работы?  [new]
Паша Б.
Member

Откуда:
Сообщений: 81
invm,
кстати, теперь вопрос как сформировать 800 файлов-бат на разные сегменты расчета.

то есть теперь нужно в цикле

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

Это уже работа с ОС. Я даже не знаю, умел ли я так файлы когда-то создавать?
31 мар 13, 16:15    [14118612]     Ответить | Цитировать Сообщить модератору
 Re: Можно запустить выполнение процедуры не дожидаясь окончания её работы?  [new]
хмммм
Guest
Паша Б.,
а Вы попробовали сделать то, что Вам написали?
start запустит на выполнение команду и продолжит выполнение Вашего пакетного файла не дожидаясь окончания команды.
если Вам нужны цикл, то их тоже есть в bat-файлах
31 мар 13, 16:27    [14118634]     Ответить | Цитировать Сообщить модератору
 Re: Можно запустить выполнение процедуры не дожидаясь окончания её работы?  [new]
Паша Б.
Member

Откуда:
Сообщений: 81
хмммм,

я бы попробовал и так, но ошибка остается

К сообщению приложен файл. Размер - 48Kb
31 мар 13, 16:29    [14118641]     Ответить | Цитировать Сообщить модератору
 Re: Можно запустить выполнение процедуры не дожидаясь окончания её работы?  [new]
хмммм
Guest
Паша Б.,
попробуйте убрать пробелы между названиями параметров их их значениями.
31 мар 13, 18:22    [14118845]     Ответить | Цитировать Сообщить модератору
 Re: Можно запустить выполнение процедуры не дожидаясь окончания её работы?  [new]
Паша Б.
Member

Откуда:
Сообщений: 81
хмммм,

не помогло.
Для наглядности приложил скриншот исполнения процедуры под SQL Studio:

Какие-нибудь ещё есть варианты?

К сообщению приложен файл. Размер - 53Kb
31 мар 13, 18:54    [14118912]     Ответить | Цитировать Сообщить модератору
 Re: Можно запустить выполнение процедуры не дожидаясь окончания её работы?  [new]
Паша Б.
Member

Откуда:
Сообщений: 81


К сообщению приложен файл. Размер - 67Kb
31 мар 13, 18:55    [14118914]     Ответить | Цитировать Сообщить модератору
 Re: Можно запустить выполнение процедуры не дожидаясь окончания её работы?  [new]
хмммм
Guest
Паша Б.,
крайне неудобно, когда люди общаются скриншотами...
пришлось даже с планшета на ноутбук переползать.
Проверьте через SQL Server Configuration Manager, включен ли у Вас доступ по tcp/ip
31 мар 13, 19:06    [14118936]     Ответить | Цитировать Сообщить модератору
 Re: Можно запустить выполнение процедуры не дожидаясь окончания её работы?  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
у вас в SSMS указано PAVEL-VB, а в sqlcmd - PAVEL_VB
31 мар 13, 19:35    [14119008]     Ответить | Цитировать Сообщить модератору
 Re: Можно запустить выполнение процедуры не дожидаясь окончания её работы?  [new]
Паша Б.
Member

Откуда:
Сообщений: 81
хмммм,

хочу Вас сообщить, что действительно состояние было выключено. Исправил. После того, как откорректировал имя сервера с pavel_vb на pavel-vb. Всё заработало.

Вау! Я 10 лет пользовался SQL Server но гейтами с операционкой не владел.

Большущее Вам спасибо!
31 мар 13, 19:55    [14119041]     Ответить | Цитировать Сообщить модератору
 Re: Можно запустить выполнение процедуры не дожидаясь окончания её работы?  [new]
Паша Б.
Member

Откуда:
Сообщений: 81
Cygapb-007,

Большущее Вам спасибо! Работает!
31 мар 13, 19:56    [14119044]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить