Список форумов BOSSForum.RU - Форум. БОСС-Кадровик
Независимый форум, посвященный системе БОСС-Кадровик
и всему, что с ней связано
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Формирование ведомостей в банк - зависание

 
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> SQL: ТЗК (Табельно-зарплатный контур)
Предыдущая тема :: Следующая тема  
Автор Сообщение
rebel25
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 06.10.2008
Сообщения: 580
Откуда: Москва

СообщениеДобавлено: Чт Фев 25, 2016 15:51    Заголовок сообщения: Формирование ведомостей в банк - зависание Ответить с цитатой

C недавнего времени, при формировании ведомостей в банк, босс навсегда зависает - висят песочные часы и в строке выполнения светится INSERT INTO GL_DOCS....
Закрываю принудительно босс, открываю и формирую ту же ведомость, она формируется быстро. Это повторяется время от времени.
Проверил вроде не тиражных объектов нет, в GL_DOCS примерно 5000 строк.
Не подскажите как выявить и устранить причину зависания формирования ведомостей в банк?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
RVV
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 14.01.2010
Сообщения: 450

СообщениеДобавлено: Чт Фев 25, 2016 16:08    Заголовок сообщения: Ответить с цитатой

Нужно создать индексы.

CREATE NONCLUSTERED INDEX [IDX_Gl_Docs__id_acc_group] ON [dbo].[Gl_Docs]
(
[id_acc_group] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
GO
CREATE NONCLUSTERED INDEX [IDX_Gl_Docs_1] ON [dbo].[Gl_Docs]
(
[id_hr_status] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
GO
CREATE NONCLUSTERED INDEX [IDX_Gl_Docs_2] ON [dbo].[Gl_Docs]
(
[idDocType] ASC,
[idFirm] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
GO
CREATE NONCLUSTERED INDEX [IDX_Gl_Docs_3] ON [dbo].[Gl_Docs]
(
[role_code] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
GO
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mikhail



Зарегистрирован: 16.08.2012
Сообщения: 177
Откуда: Москва

СообщениеДобавлено: Чт Фев 25, 2016 18:12    Заголовок сообщения: Ответить с цитатой

Аналогичная проблема.

Зависает выполнение инструкции:
Код:

INSERT INTO GL_DOCS ( comment , docnum, DocDate, role_code, idfirm, idDocType, MDATE, UNAME, id_RPVED, DocSwitch, Boss_Auto_Card, Boss_ChB_Auto_Card, Boss_name_app, Boss_ChB_name_app, Mask, pp_number, pp_date, id_acc_group ) VALUES ( 'за февраль 2016 г. ', '150', '2016-02-25', 'ROLE_NAME', 1, 2008, getdate(), 'Domain\User', 0, 0, 91299, 71409, 145, 546, '', '', '1900-01-01', 0 )


Через профайлер подсмотрел, что зависает после выполнения инструкций внутри триггера tI_Gl_Docs_id_acc_group_adtb_acc_group:
Код:

SP:StmtStarting      If @validcnt + @zerocnt != @numrows
SP:StmtCompleted   If @validcnt + @zerocnt != @numrows
SP:StmtStarting      Return
SP:StmtCompleted   Return
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
DUCKKK
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 16.09.2009
Сообщения: 1691

СообщениеДобавлено: Чт Фев 25, 2016 18:14    Заголовок сообщения: Ответить с цитатой

Индексы помогли?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Mikhail



Зарегистрирован: 16.08.2012
Сообщения: 177
Откуда: Москва

СообщениеДобавлено: Чт Фев 25, 2016 18:17    Заголовок сообщения: Ответить с цитатой

Дополнение: вышеуказанные индексы созданы, трассировку получил после их создания.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
DUCKKK
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 16.09.2009
Сообщения: 1691

СообщениеДобавлено: Чт Фев 25, 2016 18:27    Заголовок сообщения: Ответить с цитатой

А протоколирование на эти таблицы не настроено?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Mikhail



Зарегистрирован: 16.08.2012
Сообщения: 177
Откуда: Москва

СообщениеДобавлено: Чт Фев 25, 2016 18:52    Заголовок сообщения: Ответить с цитатой

DUCKKK, проверил - в протоколировании данная таблица не участвует.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
DUCKKK
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 16.09.2009
Сообщения: 1691

СообщениеДобавлено: Чт Фев 25, 2016 18:55    Заголовок сообщения: Ответить с цитатой

Под sysadmin тоже виснет? А для роли, под которой заходим, VIEW есть?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Mikhail



Зарегистрирован: 16.08.2012
Сообщения: 177
Откуда: Москва

СообщениеДобавлено: Чт Фев 25, 2016 19:50    Заголовок сообщения: Ответить с цитатой

Пробовал формировать ведомости пару раз под sa - проблем не возникало, но не берусь утверждать, что отсутствие зависаний является следствием именно этой причины.

Для пользовательской роли view не созданы. Да, есть интересный момент, что зависание под пользовательской ролью происходит не каждый раз. Соотношение между успешными попытками сформировать ведомость и неудачными примерно 1:2.

В момент неудачной попытки сформировать пользователем ведомость остальные пользователи с ведомостями не работают.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
DUCKKK
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 16.09.2009
Сообщения: 1691

СообщениеДобавлено: Пт Фев 26, 2016 00:23    Заголовок сообщения: Ответить с цитатой

Ну вот что здесь сказать ... Возможно, и сервер как-то глючит, строит такие планы запросов ....
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Volod
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 11.02.2015
Сообщения: 252

СообщениеДобавлено: Пт Фев 26, 2016 09:17    Заголовок сообщения: Ответить с цитатой

А какая у Вас версия sql ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Spartak



Зарегистрирован: 18.03.2010
Сообщения: 185

СообщениеДобавлено: Пт Фев 26, 2016 10:29    Заголовок сообщения: Ответить с цитатой

мне помогло убрать вставку в поле id_acc_group из инструкции
INSERT INTO GL_DOCS (...).
А чтобы записывать чего-то в id_acc_group добавил отдельной строкой
update gl_docs set id_acc_group=@sel:id_acc_group where id=identity_;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mikhail



Зарегистрирован: 16.08.2012
Сообщения: 177
Откуда: Москва

СообщениеДобавлено: Пт Фев 26, 2016 12:09    Заголовок сообщения: Ответить с цитатой

Версия SQL:
Microsoft SQL Server 2012 - 11.0.5058.0 (X64)
May 14 2014 18:34:29
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: )

Spartak, ваше решение вполне логично, поскольку упомянутый выше триггер tI_Gl_Docs_id_acc_group_adtb_acc_group настроен на срабатывание при условии if update(id_acc_group).

К слову, я вчера вовсе отключил на время этот триггер, после чего пользователь пару-тройку раз успешно сфомирмировал ведомости, но этого количества недостаточно для вынесения заключения, надо бы еще провести несколько попыток со сбором трассировки.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
rebel25
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 06.10.2008
Сообщения: 580
Откуда: Москва

СообщениеДобавлено: Вт Сен 06, 2016 15:59    Заголовок сообщения: Ответить с цитатой

мне помогло убрать вставку в поле id_acc_group из инструкции при отключенных тригерах. Не знаю как это работает, но помогло, вероятно индекс виноват, больше нечему.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
DUCKKK
Большой шоколадный орден
Большой шоколадный орден


Зарегистрирован: 16.09.2009
Сообщения: 1691

СообщениеДобавлено: Вт Сен 06, 2016 16:17    Заголовок сообщения: Ответить с цитатой

Можем только предположить, что произошли какие-то изменения в системных библиотеках операционной системы, которые "приехали" с каким-то из последних обновлений от Microsoft.

В частности - в системных функциях преобразования типов данных.
В качестве решение "методом тыка" пришли вот к чему.
Зависание происходит на самом деле не на операциях INSERT, а на следующей строке, которая, как правило, выглядит вот так:

SELECT @@identity INTO identity_;

Если ее переписать вот так:

Let identity_ = @@identity as integer
или
SELECT convert(integer, @@identity) INTO identity_;

зависания исчезают.

Поскольку понятно, что переменная @@identity в нашем случае и так имеет тип INTEGER, то преобразование ее к целому типу – это получается «масло масляное». Но это, судя по всему, работает ...

Сможете проверить это решение, например, при подготовке ведомостей в банк и сообщить нам, решается ли эта проблема у вас ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> SQL: ТЗК (Табельно-зарплатный контур) Часовой пояс: GMT + 4
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Pоwerеd by рhpВB © 2001, 2005 рhpВB Grouр
Русская поддержка phрВB
Rambler's Top100 Рейтинг@Mail.ru Список форумов BOSSForum.RU