![]() |
|
Ошибка выполнения запроса (спецам по MS SQL) | ☑ | ||
---|---|---|---|---|
0
Гений самоучка
20.02.06
✎
14:54
|
При формировании отчета у клиента вываливается вот такая ошибка (см. ниже)
У клиента 13 платформа на SQL, у меня 12 - файловая. У меня отчет работает на УРА. Да и у клиента работал пока не добавил условие И ВзаиморасчетыСКонтрагентамиОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг) Сам запрос большой, смысла выкладывать нет. Но запрос не сложный - несколько объединений. Как вылечить? Подозреваю что что-то нужно подправить в установках MS SQL. Ошибка СУБД: Microsoft OLE DB Provider for SQL Server: Internal Query Processor Error: The query processor ran out of stack space during query optimization. HRESULT=80040E14, SQLSTATE=42000, native=8621 по причине : Microsoft OLE DB Provider for SQL Server: Internal Query Processor Error: The query processor ran out of stack space during query optimization. HRESULT=80040E14, SQLSTATE=42000, native=8621 |
|||
1
Волшебник
модератор
20.02.06
✎
14:57
|
сколько свободного места на диске?
|
|||
2
Парижская фанера
20.02.06
✎
14:58
|
(1) Бинго.
|
|||
3
Гений самоучка
20.02.06
✎
15:02
|
Щас узнаю, с клиентом общаюсь только по почте и телефону.
У них есть администратор нормальный, ему только подсказать куда рыть. Т.е. проблема в свободном простарнсве? Каком? Просто на SQL сервере или в каком-то определенном пространстве самоу СУБД? |
|||
4
Волшебник
модератор
20.02.06
✎
15:04
|
(3) stack space
|
|||
5
Парижская фанера
20.02.06
✎
15:05
|
(3) Это он над младшими всегда издевается, как в (4).
|
|||
6
Волшебник
модератор
20.02.06
✎
15:09
|
(5) Не всегда. Не надо грязи.
|
|||
7
Гений самоучка
20.02.06
✎
15:11
|
2(4), (5) :), хотя мне до шуток.
Админ грит - место дох.. Про stack space он не знает, я вообще про MS SQL ничего не знаю |
|||
8
Волшебник
модератор
20.02.06
✎
15:12
|
(7) Слепой глухого ведет через дорогу.
|
|||
9
Salvador Limones
20.02.06
✎
15:13
|
(7) Сервис-пак SQL какой? Похоже SP2.
|
|||
10
Гений самоучка
20.02.06
✎
15:13
|
2(8):), что поделаешь - отчет мой - мои и проблемы
|
|||
11
Гений самоучка
20.02.06
✎
15:14
|
2(9) - хм... и к чему это приводит?
|
|||
12
Волшебник
модератор
20.02.06
✎
15:15
|
||||
13
Ослина
20.02.06
✎
15:15
|
||||
14
Парижская фанера
20.02.06
✎
15:17
|
(7) Варианты.
Попробовать пошевелить настройки "Memory" в SQL сервере. Сходить на www.sql.ru почитать форум там. Переделать запрос. |
|||
15
Гений самоучка
20.02.06
✎
15:19
|
Ну почему же не знают :), я уже тоже приблизительно это нашел
|
|||
16
Гений самоучка
20.02.06
✎
15:23
|
Эх, придется запрос переписывать :(, не удалось на админа спихнуть... ;)
|
|||
17
ШтушаКутуша
20.02.06
✎
15:38
|
(16) а текст запроса было бы неплохо глянуть
|
|||
18
Гений самоучка
20.02.06
✎
15:49
|
Заметьте, не я это предложил (Покровкие ворота) :)
ВЫБРАТЬ Зап5.Дт КАК Дт, Зап5.СтатьяДвижения КАК СтатьяДвижения, Зап5.Приход КАК Приход, СУММА(Зап5.Оборот) КАК Оборот, СУММА(Зап5.План) КАК План ИЗ (ВЫБРАТЬ НАЧАЛОПЕРИОДА(ДДСОбороты.Период, ДЕНЬ) КАК Дт, ДДСОбороты.СтатьяДвиженияДенежныхСредств.Наименование КАК СтатьяДвижения, ВЫБОР КОГДА ДДСОбороты.ПриходРасход = &Приход ТОГДА "Приход" ИНАЧЕ "Расход" КОНЕЦ КАК Приход, ДДСОбороты.СуммаОборот КАК Оборот, 0 КАК План ИЗ РегистрНакопления.ДвиженияДенежныхСредств.Обороты(&ДатаНач, &ДатаКон, День, ) КАК ДДСОбороты ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ НАЧАЛОПЕРИОДА(Заявка.Период, ДЕНЬ), Заявка.Регистратор.ВидОперации, "Расход", 0, Заявка.СуммаОборот ИЗ РегистрНакопления.ЗаявкиНаРасходованиеСредств.Обороты(&ДатаНач, &ДатаКон, Регистратор, ) КАК Заявка ГДЕ Заявка.СуммаОборот > 0 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ НАЧАЛОПЕРИОДА(Зап4.Дт, ДЕНЬ), "Оплата покупателями", "Приход", 0, Зап4.План ИЗ (ВЫБРАТЬ ВлЗап3.Контрагент КАК Контрагент, ВЫБОР КОГДА ЕСТЬNULL(ВлЗап3.ДниДолга, 0) = 0 ТОГДА ВлЗап3.ДатаОплаты ИНАЧЕ ВЫБОР КОГДА ВлЗап3.ДниДолгаЦел >= 1 ТОГДА ВЫБОР КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(ВлЗап3.ДатаОплаты, ДЕНЬ, ВлЗап3.ДниДолга + ВлЗап3.ДниДолгаЦел * 2)) < ДЕНЬНЕДЕЛИ(ВлЗап3.ДатаОплаты) ТОГДА ВЫБОР КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(ВлЗап3.ДатаОплаты, ДЕНЬ, ВлЗап3.ДниДолга + 2 + ВлЗап3.ДниДолгаЦел * 2)) = 6 ТОГДА ДОБАВИТЬКДАТЕ(ВлЗап3.ДатаОплаты, ДЕНЬ, ВлЗап3.ДниДолга + 2 + 2 + ВлЗап3.ДниДолгаЦел * 2) КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(ВлЗап3.ДатаОплаты, ДЕНЬ, ВлЗап3.ДниДолга + 2 + ВлЗап3.ДниДолгаЦел * 2)) = 7 ТОГДА ДОБАВИТЬКДАТЕ(ВлЗап3.ДатаОплаты, ДЕНЬ, ВлЗап3.ДниДолга + 2 + 1 + ВлЗап3.ДниДолгаЦел * 2) ИНАЧЕ ДОБАВИТЬКДАТЕ(ВлЗап3.ДатаОплаты, ДЕНЬ, ВлЗап3.ДниДолга + 2 + ВлЗап3.ДниДолгаЦел * 2) КОНЕЦ КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(ВлЗап3.ДатаОплаты, ДЕНЬ, ВлЗап3.ДниДолга + ВлЗап3.ДниДолгаЦел * 2)) = 6 ТОГДА ДОБАВИТЬКДАТЕ(ВлЗап3.ДатаОплаты, ДЕНЬ, ВлЗап3.ДниДолга + ВлЗап3.ДниДолгаЦел * 2 + 2) КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(ВлЗап3.ДатаОплаты, ДЕНЬ, ВлЗап3.ДниДолга + ВлЗап3.ДниДолгаЦел * 2)) = 7 ТОГДА ДОБАВИТЬКДАТЕ(ВлЗап3.ДатаОплаты, ДЕНЬ, ВлЗап3.ДниДолга + ВлЗап3.ДниДолгаЦел * 2 + 1) ИНАЧЕ ДОБАВИТЬКДАТЕ(ВлЗап3.ДатаОплаты, ДЕНЬ, ВлЗап3.ДниДолга + ВлЗап3.ДниДолгаЦел * 2) КОНЕЦ ИНАЧЕ ВЫБОР КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(ВлЗап3.ДатаОплаты, ДЕНЬ, ВлЗап3.ДниДолга)) < ДЕНЬНЕДЕЛИ(ВлЗап3.ДатаОплаты) ТОГДА ВЫБОР КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(ВлЗап3.ДатаОплаты, ДЕНЬ, ВлЗап3.ДниДолга + 2)) = 6 ТОГДА ДОБАВИТЬКДАТЕ(ВлЗап3.ДатаОплаты, ДЕНЬ, ВлЗап3.ДниДолга + 2 + 2) КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(ВлЗап3.ДатаОплаты, ДЕНЬ, ВлЗап3.ДниДолга + 2)) = 7 ТОГДА ДОБАВИТЬКДАТЕ(ВлЗап3.ДатаОплаты, ДЕНЬ, ВлЗап3.ДниДолга + 2 + 1) ИНАЧЕ ДОБАВИТЬКДАТЕ(ВлЗап3.ДатаОплаты, ДЕНЬ, ВлЗап3.ДниДолга + 2) КОНЕЦ КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(ВлЗап3.ДатаОплаты, ДЕНЬ, ВлЗап3.ДниДолга)) = 6 ТОГДА ДОБАВИТЬКДАТЕ(ВлЗап3.ДатаОплаты, ДЕНЬ, ВлЗап3.ДниДолга + 2) КОГДА ДЕНЬНЕДЕЛИ(ДОБАВИТЬКДАТЕ(ВлЗап3.ДатаОплаты, ДЕНЬ, ВлЗап3.ДниДолга)) = 7 ТОГДА ДОБАВИТЬКДАТЕ(ВлЗап3.ДатаОплаты, ДЕНЬ, ВлЗап3.ДниДолга + 1) ИНАЧЕ ДОБАВИТЬКДАТЕ(ВлЗап3.ДатаОплаты, ДЕНЬ, ВлЗап3.ДниДолга) КОНЕЦ КОНЕЦ КОНЕЦ КАК Дт, ВлЗап3.Приход КАК План ИЗ (ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента.Владелец КАК Контрагент, НАЧАЛОПЕРИОДА(ВзаиморасчетыСКонтрагентамиОбороты.Период, ДЕНЬ) КАК ДатаДок, НАЧАЛОПЕРИОДА(ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаОплаты ЕСТЬ NULL ИЛИ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаОплаты = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаОтгрузки ЕСТЬ NULL ИЛИ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаОтгрузки = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА ВзаиморасчетыСКонтрагентамиОбороты.Период ИНАЧЕ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаОтгрузки КОНЕЦ ИНАЧЕ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаОплаты КОНЕЦ, ДЕНЬ) КАК ДатаОплаты, ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаОплаты ЕСТЬ NULL ИЛИ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаОплаты = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности, 0) ИНАЧЕ 0 КОНЕЦ КАК ДниДолга, ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаОплаты ЕСТЬ NULL ИЛИ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаОплаты = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности / 7, 0) - 0.5 КАК ЧИСЛО(3, 0)) ИНАЧЕ 0 КОНЕЦ КАК ДниДолгаЦел, ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовПриход КАК Приход ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&ДатаНач2, &ДатаКон, Регистратор, ) КАК ВзаиморасчетыСКонтрагентамиОбороты ГДЕ ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента.Владелец ЕСТЬ НЕ NULL И ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовПриход > 0 //Вот это условие все портит, постараюсь его наверх вытащить И ВзаиморасчетыСКонтрагентамиОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг) КАК ВлЗап3 ) КАК Зап4 ГДЕ Зап4.Дт МЕЖДУ &ДатаНач И &ДатаКон) КАК Зап5 СГРУППИРОВАТЬ ПО Зап5.Приход, Зап5.СтатьяДвижения, Зап5.Дт УПОРЯДОЧИТЬ ПО Приход, СтатьяДвижения, Дт ИТОГИ ПО Приход, СтатьяДвижения, Дт ПЕРИОДАМИ(ДЕНЬ, &ДатаНач, &ДатаКон) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |