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

Откуда:
Сообщений: 44
Есть ХП, которая входным параметром принимает дату. Есть цикл, который вызывает эту процедуру, последовательно передавая ей даты от начала месяца до его соответственно конца. Есть подозрение, что вызовы процедуры
происходят не совсем последовательно.

А теперь вопрос:
обосновано ли это подозрение?
14 янв 06, 12:48    [2254799]     Ответить | Цитировать Сообщить модератору
 Re: Параллелизм при циклическом вызове ХП  [new]
........
Guest
а это подозрение проверено профайлером или "чиста интуитивна"?
14 янв 06, 12:51    [2254803]     Ответить | Цитировать Сообщить модератору
 Re: Параллелизм при циклическом вызове ХП  [new]
DragonDragon
Member

Откуда:
Сообщений: 44
Не проверено из-за отсутсвия прав. Чисто теоретически это возможно?
14 янв 06, 12:54    [2254807]     Ответить | Цитировать Сообщить модератору
 Re: Параллелизм при циклическом вызове ХП  [new]
DragonDragon
Member

Откуда:
Сообщений: 44
Можно ещё немного уточнить отчего возникло такое подозрение.
В вызываемой процедуре циклически генерируется ключ для добавления в определённую таблицу, скажем Табл1, после чего сгенерированный ключ заносится во временную таблицу, скажем #Табл2, чтобы потом занестись в подчинённую таблицу, соответственно Табл3. Добавление в Табл1 происходит в цикле по одной записи, а в Табл3 одним запросом с использованием ключей из #Табл2. Так вот при разовом вызове процедуры отдельно для каждой даты данные заносятся и в Табл1, и в Табл3. При циклическом же вызове в конце месяца данные появляются только в Табл1.
14 янв 06, 15:08    [2254975]     Ответить | Цитировать Сообщить модератору
 Re: Параллелизм при циклическом вызове ХП  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
DragonDragon
Есть ХП, которая входным параметром принимает дату. Есть цикл, который вызывает эту процедуру, последовательно передавая ей даты от начала месяца до его соответственно конца. Есть подозрение, что вызовы процедуры
происходят не совсем последовательно.

А теперь вопрос:
обосновано ли это подозрение?

Если у вас этот цикл не вызывает процедуры асинхронно, то совершенно необосновано.

Цикл, он же разный бывает...

while ...
begin
    exec sp1
    fetch...
end
- это будет синхронно выполняться, если только у вас эта sp1 не вызывает что-то там асинхронно.

while ...
begin
    exec sp_start_job ... -- а в джобе вызов sp1
    fetch...
end
- а вот это будет асинхронное выполнение

Еще можно примеры с клиентским кодом забабахать - например, на ADO можно написать и синхронный вызов процедуры, и асинхронный.

Так что уточняйте, что у вас за "цикл".
14 янв 06, 15:14    [2254982]     Ответить | Цитировать Сообщить модератору
 Re: Параллелизм при циклическом вызове ХП  [new]
DragonDragon
Member

Откуда:
Сообщений: 44
Цикл вот такой:

declare @curdate datetime
    select @curdate = '12.1.05'
    while @curdate <= '12.31.05'
    begin
        exec spLoadInvs @curdate
        select @curdate = dateadd(day,1,@curdate)
    end
go

Это называется "синхронный"? А где про это почитать?
14 янв 06, 15:22    [2254994]     Ответить | Цитировать Сообщить модератору
 Re: Параллелизм при циклическом вызове ХП  [new]
DragonDragon
Member

Откуда:
Сообщений: 44
Всем спасибо. Проблема решилась по-другому.
14 янв 06, 21:46    [2255292]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить