|
v7: Ошибка блокировки данных на SQL сервере (deadlock) | ☑ | ||
---|---|---|---|---|
0
МастерВопросов
23.09.11
✎
11:57
|
День добрый!
Из одной базы делается прямой запрос через OLEDB к SQL-ой базе на 1С77, в это время в базе работают много пользователей. До недавнего времени запрос работал нормально, но последнее время довольно часто (но не всегда) стал вылетать с ошибкой: Ошибка при выполнении обработчика - 'ПриКомпоновкеРезультата' по причине: {Отчет.НашОтчет.МодульОбъекта(1532)}: Ошибка при вызове метода контекста (Execute) Recordset = Command.Execute(); по причине: Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Transaction (Process ID 66) was deadlocked on thread | communication buffer resources with another process and has been chosen as the deadlock victim. Rerun the transaction. Запрос строится к таблицам регистра Поставщики, Покупатели, справочнику Договора. Подскажите где копать, в чем может быть ошибка? З.Ы.: На компе разоварчиваю копию двух этих баз, в "рабочей" базе запсукаю по циклу перепроведение документов за период запроса, во второй базе злополучный отчет - никаких deadlock-ов не происходит и документы проводятся нормально и отчет во второй базе строится. Единственное отличие у меня копия базы крутится на SQL2005, а настоящая база на SQL2000. |
|||
1
Ёпрст
23.09.11
✎
11:58
|
(0) хинт nolock используешь в тексте запроса ?
|
|||
2
МастерВопросов
23.09.11
✎
12:02
|
(1) да
|
|||
3
МастерВопросов
23.09.11
✎
12:03
|
может таймаут другой поставить?
" Command = Новый COMОбъект("ADODB.Command"); Command.ActiveConnection = Conn; Command.CommandText = ТекстЗапроса; Command.CommandTimeOut=0; Recordset = Новый COMОбъект("ADODB.Recordset"); Recordset = Command.Execute(); " |
|||
4
МастерВопросов
23.09.11
✎
12:04
|
(1)
ТекстЗапроса = " |SELECT Подзапрос.ВидКонтрагента ВидКонтрагента | , Подзапрос.ВидПокупателя ВидПокупателя | , Подзапрос.ОсновнойКонтрагент ОсновнойКонтрагент | , Подзапрос.Контрагент Контрагент | , Подзапрос.Период Период | , Sum(Подзапрос.ОстатокДолга) ОстатокДолга | , Sum(Подзапрос.ДвижениеДолга) ДвижениеДолга |FROM (SELECT 'С поставщиком' ВидКонтрагента | , '' ВидПокупателя | , CASE WHEN ОснКонтрагенты.Descr IS NULL THEN Контрагенты.Descr ELSE ОснКонтрагенты.Descr END ОсновнойКонтрагент | , Контрагенты.Descr Контрагент | , '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' Период | , ПоставщикиИтоги.SP4311 ОстатокДолга | , 0 ДвижениеДолга |FROM sc204 AS Договоры (nolock) | INNER JOIN sc172 AS Контрагенты (nolock) ON Договоры.PARENTEXT = Контрагенты.ID | INNER JOIN rg4314 AS ПоставщикиИтоги (nolock) ON Договоры.ID = ПоставщикиИтоги.sp4306 | LEFT OUTER JOIN SC27062 AS Подразделения (nolock) ON Контрагенты.SP573 = Подразделения.ID | LEFT OUTER JOIN sc172 AS ОснКонтрагенты (nolock) ON Контрагенты.SP36559 = ОснКонтрагенты.ID |WHERE Подразделения.CODE IS NOT NULL AND (LTRIM(RTRIM(Подразделения.CODE))='C-08') | AND (ПоставщикиИтоги.PERIOD = '"+Строка(Формат(НачалоМесяца(НачалоМесяца(НачалоПериода)-1),"ДФ=ггггММдд"))+"') |UNION ALL |SELECT 'С поставщиком' | , '' | , CASE WHEN ОснКонтрагенты.Descr IS NULL THEN Контрагенты.Descr ELSE ОснКонтрагенты.Descr END | , Контрагенты.Descr | , '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' Период | , case ПоставщикиДвижения.debkred when 0 then ПоставщикиДвижения.SP4311 else -ПоставщикиДвижения.SP4311 end | , 0 |FROM sc204 AS Договоры (nolock) | INNER JOIN sc172 AS Контрагенты (nolock) ON Договоры.PARENTEXT = Контрагенты.ID | INNER JOIN ra4314 AS ПоставщикиДвижения (nolock) ON Договоры.ID = ПоставщикиДвижения.sp4306 | inner join _1sjourn as Журнал (nolock) on Журнал.iddoc = ПоставщикиДвижения.iddoc | LEFT OUTER JOIN SC27062 AS Подразделения (nolock) ON Контрагенты.SP573 = Подразделения.ID | LEFT OUTER JOIN sc172 AS ОснКонтрагенты (nolock) ON Контрагенты.SP36559 = ОснКонтрагенты.ID |WHERE Подразделения.CODE IS NOT NULL AND (LTRIM(RTRIM(Подразделения.CODE))='C-08') | and Журнал.date_time_iddoc >= '"+Строка(Формат(НачалоМесяца(НачалоПериода),"ДФ=ггггММдд"))+"' and Журнал.date_time_iddoc < '"+Строка(Формат((НачалоПериода+1),"ДФ=ггггММдд"))+"' |UNION ALL |SELECT 'С поставщиком' | , '' | , CASE WHEN ОснКонтрагенты.Descr IS NULL THEN Контрагенты.Descr ELSE ОснКонтрагенты.Descr END | , Контрагенты.Descr | , "+ПеременнаяПериода+" | , 0 | , case ПоставщикиДвижения.debkred when 0 then ПоставщикиДвижения.SP4311 else -ПоставщикиДвижения.SP4311 end |FROM sc204 AS Договоры (nolock) | INNER JOIN sc172 AS Контрагенты (nolock) ON Договоры.PARENTEXT = Контрагенты.ID | INNER JOIN ra4314 AS ПоставщикиДвижения (nolock) ON Договоры.ID = ПоставщикиДвижения.sp4306 | inner join _1sjourn as Журнал (nolock) on Журнал.iddoc = ПоставщикиДвижения.iddoc | LEFT OUTER JOIN SC27062 AS Подразделения (nolock) ON Контрагенты.SP573 = Подразделения.ID | LEFT OUTER JOIN sc172 AS ОснКонтрагенты (nolock) ON Контрагенты.SP36559 = ОснКонтрагенты.ID |WHERE Подразделения.CODE IS NOT NULL AND (LTRIM(RTRIM(Подразделения.CODE))='C-08') | and Журнал.date_time_iddoc >= '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' and Журнал.date_time_iddoc < '"+Строка(Формат((КонецПериода+1),"ДФ=ггггММдд"))+"' |UNION ALL |SELECT 'С поставщиком' | , '' | , CASE WHEN ОснКонтрагенты.Descr IS NULL THEN Контрагенты.Descr ELSE ОснКонтрагенты.Descr END | , Контрагенты.Descr | , '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' | , ПокупателиИтоги.SP4329 | , 0 |FROM sc204 AS Договоры (nolock) | INNER JOIN sc172 AS Контрагенты (nolock) ON Договоры.PARENTEXT = Контрагенты.ID | INNER JOIN rg4335 AS ПокупателиИтоги (nolock) ON Договоры.ID = ПокупателиИтоги.sp4323 | LEFT OUTER JOIN SC27062 AS Подразделения (nolock) ON Контрагенты.SP573 = Подразделения.ID | LEFT OUTER JOIN sc172 AS ОснКонтрагенты (nolock) ON Контрагенты.SP36559 = ОснКонтрагенты.ID |WHERE Подразделения.CODE IS NOT NULL AND (LTRIM(RTRIM(Подразделения.CODE))='C-08') | AND (ПокупателиИтоги.PERIOD = '"+Строка(Формат(НачалоМесяца(НачалоМесяца(НачалоПериода)-1),"ДФ=ггггММдд"))+"') |UNION ALL |SELECT 'С поставщиком' | , '' | , CASE WHEN ОснКонтрагенты.Descr IS NULL THEN Контрагенты.Descr ELSE ОснКонтрагенты.Descr END | , Контрагенты.Descr | , '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' | , case ПокупателиДвижения.debkred when 0 then ПокупателиДвижения.SP4329 else -ПокупателиДвижения.SP4329 end | , 0 |FROM sc204 AS Договоры (nolock) | INNER JOIN sc172 AS Контрагенты (nolock) ON Договоры.PARENTEXT = Контрагенты.ID | INNER JOIN ra4335 AS ПокупателиДвижения (nolock) ON Договоры.ID = ПокупателиДвижения.sp4323 | inner join _1sjourn as Журнал (nolock) on Журнал.iddoc = ПокупателиДвижения.iddoc | LEFT OUTER JOIN SC27062 AS Подразделения (nolock) ON Контрагенты.SP573 = Подразделения.ID | LEFT OUTER JOIN sc172 AS ОснКонтрагенты (nolock) ON Контрагенты.SP36559 = ОснКонтрагенты.ID |WHERE Подразделения.CODE IS NOT NULL AND (LTRIM(RTRIM(Подразделения.CODE))='C-08') | and Журнал.date_time_iddoc >= '"+Строка(Формат(НачалоМесяца(НачалоПериода),"ДФ=ггггММдд"))+"' and Журнал.date_time_iddoc < '"+Строка(Формат((НачалоПериода+1),"ДФ=ггггММдд"))+"' |UNION ALL |SELECT 'С поставщиком' | , '' | , CASE WHEN ОснКонтрагенты.Descr IS NULL THEN Контрагенты.Descr ELSE ОснКонтрагенты.Descr END | , Контрагенты.Descr | , "+ПеременнаяПериода+" | , 0 | , case ПокупателиДвижения.debkred when 0 then ПокупателиДвижения.SP4329 else -ПокупателиДвижения.SP4329 end |FROM sc204 AS Договоры (nolock) | INNER JOIN sc172 AS Контрагенты (nolock) ON Договоры.PARENTEXT = Контрагенты.ID | INNER JOIN ra4335 AS ПокупателиДвижения (nolock) ON Договоры.ID = ПокупателиДвижения.sp4323 | inner join _1sjourn as Журнал (nolock) on Журнал.iddoc = ПокупателиДвижения.iddoc | LEFT OUTER JOIN SC27062 AS Подразделения (nolock) ON Контрагенты.SP573 = Подразделения.ID | LEFT OUTER JOIN sc172 AS ОснКонтрагенты (nolock) ON Контрагенты.SP36559 = ОснКонтрагенты.ID |WHERE Подразделения.CODE IS NOT NULL AND (LTRIM(RTRIM(Подразделения.CODE))='C-08') | and Журнал.date_time_iddoc >= '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' and Журнал.date_time_iddoc < '"+Строка(Формат((КонецПериода+1),"ДФ=ггггММдд"))+"' |UNION ALL |SELECT 'С покупателем' | , case Подразделения.DESCR when 'Отдел продаж (опт)' then 'опт' else (case Подразделения.DESCR when 'Отдел Маурер' then 'Маурер' else 'розница' end ) end | , CASE WHEN ОснКонтрагенты.Descr IS NULL THEN Контрагенты.Descr ELSE ОснКонтрагенты.Descr END | , Контрагенты.Descr | , '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' | , ПокупателиИтоги.SP4329 | , 0 |FROM sc204 AS Договоры (nolock) | INNER JOIN sc172 AS Контрагенты (nolock) ON Договоры.PARENTEXT = Контрагенты.ID | INNER JOIN rg4335 AS ПокупателиИтоги (nolock) ON Договоры.ID = ПокупателиИтоги.sp4323 | LEFT OUTER JOIN SC27062 AS Подразделения (nolock) ON Контрагенты.SP573 = Подразделения.ID | LEFT OUTER JOIN sc172 AS ОснКонтрагенты (nolock) ON Контрагенты.SP36559 = ОснКонтрагенты.ID |WHERE Подразделения.CODE IS NOT NULL AND (LTRIM(RTRIM(Подразделения.CODE))='C-16' OR LTRIM(RTRIM(Подразделения.CODE))='C-02' OR LTRIM(RTRIM(Подразделения.CODE))='C-13') | AND (ПокупателиИтоги.PERIOD = '"+Строка(Формат(НачалоМесяца(НачалоМесяца(НачалоПериода)-1),"ДФ=ггггММдд"))+"') |UNION ALL |SELECT 'С покупателем' | , case Подразделения.DESCR when 'Отдел продаж (опт)' then 'опт' else (case Подразделения.DESCR when 'Отдел Маурер' then 'Маурер' else 'розница' end ) end | , CASE WHEN ОснКонтрагенты.Descr IS NULL THEN Контрагенты.Descr ELSE ОснКонтрагенты.Descr END | , Контрагенты.Descr | , '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' | , case ПокупателиДвижения.debkred when 0 then ПокупателиДвижения.SP4329 else -ПокупателиДвижения.SP4329 end | , 0 |FROM sc204 AS Договоры (nolock) | INNER JOIN sc172 AS Контрагенты (nolock) ON Договоры.PARENTEXT = Контрагенты.ID | INNER JOIN ra4335 AS ПокупателиДвижения (nolock) ON Договоры.ID = ПокупателиДвижения.sp4323 | inner join _1sjourn as Журнал (nolock) on Журнал.iddoc = ПокупателиДвижения.iddoc | LEFT OUTER JOIN SC27062 AS Подразделения (nolock) ON Контрагенты.SP573 = Подразделения.ID | LEFT OUTER JOIN sc172 AS ОснКонтрагенты (nolock) ON Контрагенты.SP36559 = ОснКонтрагенты.ID |WHERE Подразделения.CODE IS NOT NULL AND (LTRIM(RTRIM(Подразделения.CODE))='C-16' OR LTRIM(RTRIM(Подразделения.CODE))='C-02' OR LTRIM(RTRIM(Подразделения.CODE))='C-13') | and Журнал.date_time_iddoc >= '"+Строка(Формат(НачалоМесяца(НачалоПериода),"ДФ=ггггММдд"))+"' and Журнал.date_time_iddoc < '"+Строка(Формат((НачалоПериода+1),"ДФ=ггггММдд"))+"' |UNION ALL |SELECT 'С покупателем' | , case Подразделения.DESCR when 'Отдел продаж (опт)' then 'опт' else (case Подразделения.DESCR when 'Отдел Маурер' then 'Маурер' else 'розница' end ) end | , CASE WHEN ОснКонтрагенты.Descr IS NULL THEN Контрагенты.Descr ELSE ОснКонтрагенты.Descr END | , Контрагенты.Descr | , "+ПеременнаяПериода+" | , 0 | , case ПокупателиДвижения.debkred when 0 then ПокупателиДвижения.SP4329 else -ПокупателиДвижения.SP4329 end |FROM sc204 AS Договоры (nolock) | INNER JOIN sc172 AS Контрагенты (nolock) ON Договоры.PARENTEXT = Контрагенты.ID | INNER JOIN ra4335 AS ПокупателиДвижения (nolock) ON Договоры.ID = ПокупателиДвижения.sp4323 | inner join _1sjourn as Журнал (nolock) on Журнал.iddoc = ПокупателиДвижения.iddoc | LEFT OUTER JOIN SC27062 AS Подразделения (nolock) ON Контрагенты.SP573 = Подразделения.ID | LEFT OUTER JOIN sc172 AS ОснКонтрагенты (nolock) ON Контрагенты.SP36559 = ОснКонтрагенты.ID |WHERE Подразделения.CODE IS NOT NULL AND (LTRIM(RTRIM(Подразделения.CODE))='C-16' OR LTRIM(RTRIM(Подразделения.CODE))='C-02' OR LTRIM(RTRIM(Подразделения.CODE))='C-13') | and Журнал.date_time_iddoc >= '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' and Журнал.date_time_iddoc < '"+Строка(Формат((КонецПериода+1),"ДФ=ггггММдд"))+"' |UNION ALL |SELECT 'С покупателем' ВидКонтрагента | , case Подразделения.DESCR when 'Отдел продаж (опт)' then 'опт' else (case Подразделения.DESCR when 'Отдел Маурер' then 'Маурер' else 'розница' end ) end | , CASE WHEN ОснКонтрагенты.Descr IS NULL THEN Контрагенты.Descr ELSE ОснКонтрагенты.Descr END | , Контрагенты.Descr Контрагент | , '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' Период | , ПоставщикиИтоги.SP4311 ОстатокДолга | , 0 ДвижениеДолга |FROM sc204 AS Договоры (nolock) | INNER JOIN sc172 AS Контрагенты (nolock) ON Договоры.PARENTEXT = Контрагенты.ID | INNER JOIN rg4314 AS ПоставщикиИтоги (nolock) ON Договоры.ID = ПоставщикиИтоги.sp4306 | LEFT OUTER JOIN SC27062 AS Подразделения (nolock) ON Контрагенты.SP573 = Подразделения.ID | LEFT OUTER JOIN sc172 AS ОснКонтрагенты (nolock) ON Контрагенты.SP36559 = ОснКонтрагенты.ID |WHERE Подразделения.CODE IS NOT NULL AND (LTRIM(RTRIM(Подразделения.CODE))='C-16' OR LTRIM(RTRIM(Подразделения.CODE))='C-02' OR LTRIM(RTRIM(Подразделения.CODE))='C-13') | AND (ПоставщикиИтоги.PERIOD = '"+Строка(Формат(НачалоМесяца(НачалоМесяца(НачалоПериода)-1),"ДФ=ггггММдд"))+"') |UNION ALL |SELECT 'С покупателем' | , case Подразделения.DESCR when 'Отдел продаж (опт)' then 'опт' else (case Подразделения.DESCR when 'Отдел Маурер' then 'Маурер' else 'розница' end ) end | , CASE WHEN ОснКонтрагенты.Descr IS NULL THEN Контрагенты.Descr ELSE ОснКонтрагенты.Descr END | , Контрагенты.Descr | , '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' Период | , case ПоставщикиДвижения.debkred when 0 then ПоставщикиДвижения.SP4311 else -ПоставщикиДвижения.SP4311 end | , 0 |FROM sc204 AS Договоры (nolock) | INNER JOIN sc172 AS Контрагенты (nolock) ON Договоры.PARENTEXT = Контрагенты.ID | INNER JOIN ra4314 AS ПоставщикиДвижения (nolock) ON Договоры.ID = ПоставщикиДвижения.sp4306 | inner join _1sjourn as Журнал (nolock) on Журнал.iddoc = ПоставщикиДвижения.iddoc | LEFT OUTER JOIN SC27062 AS Подразделения (nolock) ON Контрагенты.SP573 = Подразделения.ID | LEFT OUTER JOIN sc172 AS ОснКонтрагенты (nolock) ON Контрагенты.SP36559 = ОснКонтрагенты.ID |WHERE Подразделения.CODE IS NOT NULL AND (LTRIM(RTRIM(Подразделения.CODE))='C-16' OR LTRIM(RTRIM(Подразделения.CODE))='C-02' OR LTRIM(RTRIM(Подразделения.CODE))='C-13') | and Журнал.date_time_iddoc >= '"+Строка(Формат(НачалоМесяца(НачалоПериода),"ДФ=ггггММдд"))+"' and Журнал.date_time_iddoc < '"+Строка(Формат((НачалоПериода+1),"ДФ=ггггММдд"))+"' |UNION ALL |SELECT 'С покупателем' | , case Подразделения.DESCR when 'Отдел продаж (опт)' then 'опт' else (case Подразделения.DESCR when 'Отдел Маурер' then 'Маурер' else 'розница' end ) end | , CASE WHEN ОснКонтрагенты.Descr IS NULL THEN Контрагенты.Descr ELSE ОснКонтрагенты.Descr END | , Контрагенты.Descr | , "+ПеременнаяПериода+" | , 0 | , case ПоставщикиДвижения.debkred when 0 then ПоставщикиДвижения.SP4311 else -ПоставщикиДвижения.SP4311 end |FROM sc204 AS Договоры (nolock) | INNER JOIN sc172 AS Контрагенты (nolock) ON Договоры.PARENTEXT = Контрагенты.ID | INNER JOIN ra4314 AS ПоставщикиДвижения (nolock) ON Договоры.ID = ПоставщикиДвижения.sp4306 | inner join _1sjourn as Журнал (nolock) on Журнал.iddoc = ПоставщикиДвижения.iddoc | LEFT OUTER JOIN SC27062 AS Подразделения (nolock) ON Контрагенты.SP573 = Подразделения.ID | LEFT OUTER JOIN sc172 AS ОснКонтрагенты (nolock) ON Контрагенты.SP36559 = ОснКонтрагенты.ID |WHERE Подразделения.CODE IS NOT NULL AND (LTRIM(RTRIM(Подразделения.CODE))='C-16' OR LTRIM(RTRIM(Подразделения.CODE))='C-02' OR LTRIM(RTRIM(Подразделения.CODE))='C-13') | and Журнал.date_time_iddoc >= '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' and Журнал.date_time_iddoc < '"+Строка(Формат((КонецПериода+1),"ДФ=ггггММдд"))+"' |UNION ALL |SELECT 'Прочие' | , '' | , CASE WHEN ОснКонтрагенты.Descr IS NULL THEN Контрагенты.Descr ELSE ОснКонтрагенты.Descr END | , Контрагенты.Descr | , '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' | , ПоставщикиИтоги.SP4311 | , 0 |FROM sc204 AS Договоры (nolock) | INNER JOIN sc172 AS Контрагенты (nolock) ON Договоры.PARENTEXT = Контрагенты.ID | INNER JOIN rg4314 AS ПоставщикиИтоги (nolock) ON Договоры.ID = ПоставщикиИтоги.sp4306 | LEFT OUTER JOIN SC27062 AS Подразделения (nolock) ON Контрагенты.SP573 = Подразделения.ID | LEFT OUTER JOIN sc172 AS ОснКонтрагенты (nolock) ON Контрагенты.SP36559 = ОснКонтрагенты.ID |WHERE ((Подразделения.CODE IS NULL) OR (Подразделения.CODE IS NOT NULL AND NOT(LTRIM(RTRIM(Подразделения.CODE))='C-16' OR LTRIM(RTRIM(Подразделения.CODE))='C-08' OR LTRIM(RTRIM(Подразделения.CODE))='C-02' OR LTRIM(RTRIM(Подразделения.CODE))='C-13'))) | AND (ПоставщикиИтоги.PERIOD = '"+Строка(Формат(НачалоМесяца(НачалоМесяца(НачалоПериода)-1),"ДФ=ггггММдд"))+"') |UNION ALL |SELECT 'Прочие' | , '' | , CASE WHEN ОснКонтрагенты.Descr IS NULL THEN Контрагенты.Descr ELSE ОснКонтрагенты.Descr END | , Контрагенты.Descr | , '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' | , case ПоставщикиДвижения.debkred when 0 then ПоставщикиДвижения.SP4311 else -ПоставщикиДвижения.SP4311 end | , 0 |FROM sc204 AS Договоры (nolock) | INNER JOIN sc172 AS Контрагенты (nolock) ON Договоры.PARENTEXT = Контрагенты.ID | INNER JOIN ra4314 AS ПоставщикиДвижения (nolock) ON Договоры.ID = ПоставщикиДвижения.sp4306 | inner join _1sjourn as Журнал (nolock) on Журнал.iddoc = ПоставщикиДвижения.iddoc | LEFT OUTER JOIN SC27062 AS Подразделения (nolock) ON Контрагенты.SP573 = Подразделения.ID | LEFT OUTER JOIN sc172 AS ОснКонтрагенты (nolock) ON Контрагенты.SP36559 = ОснКонтрагенты.ID |WHERE ((Подразделения.CODE IS NULL) OR (Подразделения.CODE IS NOT NULL AND NOT(LTRIM(RTRIM(Подразделения.CODE))='C-16' OR LTRIM(RTRIM(Подразделения.CODE))='C-08' OR LTRIM(RTRIM(Подразделения.CODE))='C-02' OR LTRIM(RTRIM(Подразделения.CODE))='C-13'))) | and Журнал.date_time_iddoc >= '"+Строка(Формат(НачалоМесяца(НачалоПериода),"ДФ=ггггММдд"))+"' and Журнал.date_time_iddoc < '"+Строка(Формат((НачалоПериода+1),"ДФ=ггггММдд"))+"' |UNION ALL |SELECT 'Прочие' | , '' | , CASE WHEN ОснКонтрагенты.Descr IS NULL THEN Контрагенты.Descr ELSE ОснКонтрагенты.Descr END | , Контрагенты.Descr | , "+ПеременнаяПериода+" | , 0 | , case ПоставщикиДвижения.debkred when 0 then ПоставщикиДвижения.SP4311 else -ПоставщикиДвижения.SP4311 end |FROM sc204 AS Договоры (nolock) | INNER JOIN sc172 AS Контрагенты (nolock) ON Договоры.PARENTEXT = Контрагенты.ID | INNER JOIN ra4314 AS ПоставщикиДвижения (nolock) ON Договоры.ID = ПоставщикиДвижения.sp4306 | inner join _1sjourn as Журнал (nolock) on Журнал.iddoc = ПоставщикиДвижения.iddoc | LEFT OUTER JOIN SC27062 AS Подразделения (nolock) ON Контрагенты.SP573 = Подразделения.ID | LEFT OUTER JOIN sc172 AS ОснКонтрагенты (nolock) ON Контрагенты.SP36559 = ОснКонтрагенты.ID |WHERE ((Подразделения.CODE IS NULL) OR (Подразделения.CODE IS NOT NULL AND NOT(LTRIM(RTRIM(Подразделения.CODE))='C-16' OR LTRIM(RTRIM(Подразделения.CODE))='C-08' OR LTRIM(RTRIM(Подразделения.CODE))='C-02' OR LTRIM(RTRIM(Подразделения.CODE))='C-13'))) | and Журнал.date_time_iddoc >= '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' and Журнал.date_time_iddoc < '"+Строка(Формат((КонецПериода+1),"ДФ=ггггММдд"))+"' |UNION ALL |SELECT 'Прочие' | , '' | , CASE WHEN ОснКонтрагенты.Descr IS NULL THEN Контрагенты.Descr ELSE ОснКонтрагенты.Descr END | , Контрагенты.Descr | , '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' | , ПокупателиИтоги.SP4329 | , 0 |FROM sc204 AS Договоры (nolock) | INNER JOIN sc172 AS Контрагенты (nolock) ON Договоры.PARENTEXT = Контрагенты.ID | INNER JOIN rg4335 AS ПокупателиИтоги (nolock) ON Договоры.ID = ПокупателиИтоги.sp4323 | LEFT OUTER JOIN SC27062 AS Подразделения (nolock) ON Контрагенты.SP573 = Подразделения.ID | LEFT OUTER JOIN sc172 AS ОснКонтрагенты (nolock) ON Контрагенты.SP36559 = ОснКонтрагенты.ID |WHERE ((Подразделения.CODE IS NULL) OR (Подразделения.CODE IS NOT NULL AND NOT(LTRIM(RTRIM(Подразделения.CODE))='C-16' OR LTRIM(RTRIM(Подразделения.CODE))='C-08' OR LTRIM(RTRIM(Подразделения.CODE))='C-02' OR LTRIM(RTRIM(Подразделения.CODE))='C-13'))) | AND (ПокупателиИтоги.PERIOD = '"+Строка(Формат(НачалоМесяца(НачалоМесяца(НачалоПериода)-1),"ДФ=ггггММдд"))+"') |UNION ALL |SELECT 'Прочие' | , '' | , CASE WHEN ОснКонтрагенты.Descr IS NULL THEN Контрагенты.Descr ELSE ОснКонтрагенты.Descr END | , Контрагенты.Descr | , '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' | , case ПокупателиДвижения.debkred when 0 then ПокупателиДвижения.SP4329 else -ПокупателиДвижения.SP4329 end | , 0 |FROM sc204 AS Договоры (nolock) | INNER JOIN sc172 AS Контрагенты (nolock) ON Договоры.PARENTEXT = Контрагенты.ID | INNER JOIN ra4335 AS ПокупателиДвижения (nolock) ON Договоры.ID = ПокупателиДвижения.sp4323 | inner join _1sjourn as Журнал (nolock) on Журнал.iddoc = ПокупателиДвижения.iddoc | LEFT OUTER JOIN SC27062 AS Подразделения (nolock) ON Контрагенты.SP573 = Подразделения.ID | LEFT OUTER JOIN sc172 AS ОснКонтрагенты (nolock) ON Контрагенты.SP36559 = ОснКонтрагенты.ID |WHERE ((Подразделения.CODE IS NULL) OR (Подразделения.CODE IS NOT NULL AND NOT(LTRIM(RTRIM(Подразделения.CODE))='C-16' OR LTRIM(RTRIM(Подразделения.CODE))='C-08' OR LTRIM(RTRIM(Подразделения.CODE))='C-02' OR LTRIM(RTRIM(Подразделения.CODE))='C-13'))) | and Журнал.date_time_iddoc >= '"+Строка(Формат(НачалоМесяца(НачалоПериода),"ДФ=ггггММдд"))+"' and Журнал.date_time_iddoc < '"+Строка(Формат((НачалоПериода+1),"ДФ=ггггММдд"))+"' |UNION ALL |SELECT 'Прочие' | , '' | , CASE WHEN ОснКонтрагенты.Descr IS NULL THEN Контрагенты.Descr ELSE ОснКонтрагенты.Descr END | , Контрагенты.Descr | , "+ПеременнаяПериода+" | , 0 | , case ПокупателиДвижения.debkred when 0 then ПокупателиДвижения.SP4329 else -ПокупателиДвижения.SP4329 end |FROM sc204 AS Договоры (nolock) | INNER JOIN sc172 AS Контрагенты (nolock) ON Договоры.PARENTEXT = Контрагенты.ID | INNER JOIN ra4335 AS ПокупателиДвижения (nolock) ON Договоры.ID = ПокупателиДвижения.sp4323 | inner join _1sjourn as Журнал (nolock) on Журнал.iddoc = ПокупателиДвижения.iddoc | LEFT OUTER JOIN SC27062 AS Подразделения (nolock) ON Контрагенты.SP573 = Подразделения.ID | LEFT OUTER JOIN sc172 AS ОснКонтрагенты (nolock) ON Контрагенты.SP36559 = ОснКонтрагенты.ID |WHERE ((Подразделения.CODE IS NULL) OR (Подразделения.CODE IS NOT NULL AND NOT(LTRIM(RTRIM(Подразделения.CODE))='C-16' OR LTRIM(RTRIM(Подразделения.CODE))='C-08' OR LTRIM(RTRIM(Подразделения.CODE))='C-02' OR LTRIM(RTRIM(Подразделения.CODE))='C-13'))) | and Журнал.date_time_iddoc >= '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' and Журнал.date_time_iddoc < '"+Строка(Формат((КонецПериода+1),"ДФ=ггггММдд"))+"' |) AS Подзапрос |GROUP BY Подзапрос.ВидКонтрагента | , Подзапрос.ВидПокупателя | , Подзапрос.ОсновнойКонтрагент | , Подзапрос.Контрагент | , Подзапрос.Период |"; Command = Новый COMОбъект("ADODB.Command"); Command.ActiveConnection = Conn; Command.CommandText = ТекстЗапроса; Command.CommandTimeOut=0; Recordset = Новый COMОбъект("ADODB.Recordset"); Recordset = Command.Execute(); //здесь вылетает ошибка |
|||
5
Ёпрст
23.09.11
✎
12:11
|
(4) и.. нахрена ado использовать ?!
|
|||
6
Ёпрст
23.09.11
✎
12:12
|
+5 а всё вижу, это запрос из снеговика к клюшкам.
|
|||
7
МихаилМ
23.09.11
✎
12:16
|
deadlocks Involving Parallelism
промеряется (и лечится) OPTION(MAXDOP 1) |
|||
8
МихаилМ
23.09.11
✎
12:19
|
+(7)
не вооруженным глазом видно , что часть джоинов нужно вынести за union |
|||
9
МастерВопросов
23.09.11
✎
12:27
|
(7) OPTION(MAXDOP 1) - включить однопроцессорный режим?
И отключить четыре четырехядерных процессора... на это я пойтить не могу. |
|||
10
Ёпрст
23.09.11
✎
12:29
|
(9) можешь так сделать:
sp_configure 'show advanced options', 1; GO RECONFIGURE WITH OVERRIDE; GO sp_configure 'max degree of parallelism', 1; GO RECONFIGURE WITH OVERRIDE; GO |
|||
11
МихаилМ
23.09.11
✎
12:33
|
максдоп для проверки добавить в текст запроса
хотя итак понятно, что проблема в блокировке при распараллеливании хотите распарралелить - перепишите этот отратительный запрос. в оциях сервера изменять не к чему. хотя есть рекрмендации олтп не параллелить. |
|||
12
МастерВопросов
23.09.11
✎
12:43
|
А, вообще, как думаете это запрос сам себя блокирует, или какая то деятельность пользователей в базе мешает выполняться запросу?
|
|||
13
Ёпрст
23.09.11
✎
12:45
|
(12) уриба нет случаем ?
|
|||
14
Ёпрст
23.09.11
✎
12:45
|
да и код, переписал бы что ли..
|
|||
15
Ёпрст
23.09.11
✎
12:45
|
весь.
|
|||
16
МихаилМ
23.09.11
✎
12:53
|
(12)
самоблокировка в запросе скорее всего если запрос запустить из ssms получите другой текст ошибки типа Intra-query parallelism caused your server command (process ID ...) to deadlock |
|||
17
МастерВопросов
23.09.11
✎
13:19
|
(13) да, на рабочей базе (к которой запрос строится) есть!
|
|||
18
МастерВопросов
24.09.11
✎
11:26
|
переписал запрос, в понедельник будут полоевые испытания:
ТекстЗапроса = " |SELECT |CASE WHEN LTRIM(RTRIM(Подразделения.CODE))='C-08' then 'С поставщиком' else (CASE WHEN LTRIM(RTRIM(Подразделения.CODE))='C-16' OR LTRIM(RTRIM(Подразделения.CODE))='C-02' OR LTRIM(RTRIM(Подразделения.CODE))='C-13' then 'С покупателем' else 'Прочие' end) end ВидКонтрагента | , CASE WHEN LTRIM(RTRIM(Подразделения.CODE))='C-02' then 'опт' else (CASE WHEN LTRIM(RTRIM(Подразделения.CODE))='C-16' then 'Маруер' else (CASE WHEN LTRIM(RTRIM(Подразделения.CODE))='C-13' then 'розница' else '' end) end) end ВидПокупателя | , CASE WHEN ОснКонтрагенты.Descr IS NULL THEN Контрагенты.Descr ELSE ОснКонтрагенты.Descr END ОсновнойКонтрагент | , Контрагенты.Descr Контрагент | , Подзапрос.Период Период | , Sum(Подзапрос.ОстатокДолга) ОстатокДолга | , Sum(Подзапрос.ДвижениеДолга) ДвижениеДолга |FROM (SELECT | ПоставщикиИтоги.sp4306 Договор | , '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' Период | , ПоставщикиИтоги.SP4311 ОстатокДолга | , 0 ДвижениеДолга |FROM rg4314 AS ПоставщикиИтоги (nolock) |WHERE (ПоставщикиИтоги.PERIOD = '"+Строка(Формат(НачалоМесяца(НачалоМесяца(НачалоПериода)-1),"ДФ=ггггММдд"))+"') |UNION ALL |SELECT ПоставщикиДвижения.sp4306 | , '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' Период | , case ПоставщикиДвижения.debkred when 0 then ПоставщикиДвижения.SP4311 else -ПоставщикиДвижения.SP4311 end | , 0 |FROM ra4314 AS ПоставщикиДвижения (nolock) | inner join _1sjourn as Журнал1 (nolock) on Журнал1.iddoc = ПоставщикиДвижения.iddoc |WHERE Журнал1.date_time_iddoc >= '"+Строка(Формат(НачалоМесяца(НачалоПериода),"ДФ=ггггММдд"))+"' and Журнал1.date_time_iddoc < '"+Строка(Формат((НачалоПериода+1),"ДФ=ггггММдд"))+"' |UNION ALL |SELECT ПоставщикиДвижения2.sp4306 | , "+СтрЗаменить(ПеременнаяПериода,"Журнал","Журнал2")+" | , 0 | , case ПоставщикиДвижения2.debkred when 0 then ПоставщикиДвижения2.SP4311 else -ПоставщикиДвижения2.SP4311 end |FROM ra4314 AS ПоставщикиДвижения2 (nolock) | inner join _1sjourn as Журнал2 (nolock) on Журнал2.iddoc = ПоставщикиДвижения2.iddoc |WHERE Журнал2.date_time_iddoc >= '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' and Журнал2.date_time_iddoc < '"+Строка(Формат((КонецПериода+1),"ДФ=ггггММдд"))+"' |UNION ALL |SELECT ПокупателиИтоги.sp4323 | , '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' | , ПокупателиИтоги.SP4329 | , 0 |FROM rg4335 AS ПокупателиИтоги (nolock) |WHERE (ПокупателиИтоги.PERIOD = '"+Строка(Формат(НачалоМесяца(НачалоМесяца(НачалоПериода)-1),"ДФ=ггггММдд"))+"') |UNION ALL |SELECT ПокупателиДвижения.sp4323 | , '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' | , case ПокупателиДвижения.debkred when 0 then ПокупателиДвижения.SP4329 else -ПокупателиДвижения.SP4329 end | , 0 |FROM ra4335 AS ПокупателиДвижения (nolock) | inner join _1sjourn as Журнал3 (nolock) on Журнал3.iddoc = ПокупателиДвижения.iddoc |WHERE |Журнал3.date_time_iddoc >= '"+Строка(Формат(НачалоМесяца(НачалоПериода),"ДФ=ггггММдд"))+"' and Журнал3.date_time_iddoc < '"+Строка(Формат((НачалоПериода+1),"ДФ=ггггММдд"))+"' |UNION ALL |SELECT ПокупателиДвижения2.sp4323 | , "+СтрЗаменить(ПеременнаяПериода,"Журнал","Журнал4")+" | , 0 | , case ПокупателиДвижения2.debkred when 0 then ПокупателиДвижения2.SP4329 else -ПокупателиДвижения2.SP4329 end |FROM ra4335 AS ПокупателиДвижения2 (nolock) | inner join _1sjourn as Журнал4 (nolock) on Журнал4.iddoc = ПокупателиДвижения2.iddoc |WHERE Журнал4.date_time_iddoc >= '"+Строка(Формат(НачалоПериода,"ДФ=ггггММдд"))+"' and Журнал4.date_time_iddoc < '"+Строка(Формат((КонецПериода+1),"ДФ=ггггММдд"))+"' |) AS Подзапрос | INNER JOIN sc204 AS Договоры (nolock) ON Договоры.ID = Подзапрос.Договор | INNER JOIN sc172 AS Контрагенты (nolock) ON Договоры.PARENTEXT = Контрагенты.ID | LEFT OUTER JOIN SC27062 AS Подразделения (nolock) ON Контрагенты.SP573 = Подразделения.ID | LEFT OUTER JOIN sc172 AS ОснКонтрагенты (nolock) ON Контрагенты.SP36559 = ОснКонтрагенты.ID | WHERE Подразделения.CODE IS NOT NULL |GROUP BY | Подразделения.CODE | , Подразделения.CODE | , ОснКонтрагенты.Descr | , Контрагенты.Descr | , Подзапрос.Период |"; |
|||
19
МастерВопросов
24.09.11
✎
11:31
|
кстати, как SCL сервер относится к запросам с одноименными таблицам типа:
|UNION ALL ... | INNER JOIN sc172 AS Контрагенты (nolock) ON Договоры.PARENTEXT = Контрагенты.ID ... |UNION ALL ... | INNER JOIN sc172 AS Контрагенты (nolock) ON Договоры.PARENTEXT = Контрагенты.ID | inner join _1sjourn as Журнал (nolock) on Журнал.iddoc = ПокупателиДвижения.iddoc ... |UNION ALL ... INNER JOIN sc172 AS Контрагенты (nolock) ON Договоры.PARENTEXT = Контрагенты.ID | inner join _1sjourn as Журнал (nolock) on Журнал.iddoc = ПокупателиДвижения.iddoc |
|||
20
val
24.09.11
✎
11:59
|
(19) Альясы давай разные:
AS Контрагенты1 AS Контрагенты2 AS Контрагенты3 и проблем не будет никогда |
|||
21
МастерВопросов
24.09.11
✎
12:20
|
(20) я так и сделал в (18)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |