![]() |
![]() |
![]() |
|
УТ, ошибка SQL ₽ |
☑ | ||
---|---|---|---|---|
0
knyazevs
19.03.10
✎
10:17
|
Здравствуйте, формирую в УТ (переписанная 10.3.5.1, платформа 8.1.13.41) отчет "Продажи по оплате за период". Интервал формирования - один месяц, группировка всего лишь одна - Покупатель.Основной менеджер покупателя, измерение одно - Сумма продажи, по одному фильтру по подразделению и группе номенклатуры. База совсем небольшая (оптовая торговля) - примерно 700 реализаций в месяц, в каждой в среднем 5 позиций. Заказов - 1200 в месяц.
После продолжительного зависания выскивает ошибка "Ошибка СУБД: Microsoft OLE DB Provider for SQL Server: Журнал транзакций для базы данных "tempdb" заполнен. Чтобы обнаружить причину, по которой место в журнале не может быть повторно использовано, обратитесь к столбцу log_reuse_wait_desc таблицы sys.databases HRESULT=80040E14, HRESULT=80040E14, SQLSrvr: Error state=4, Severity=11, native=9002, line=1 SQLSrvr: Error state=4, Severity=11, native=9002, line=1" Отчего такое может быть? |
|||
1
Defender aka LINN
19.03.10
✎
10:25
|
"Чтобы обнаружить причину, по которой место в журнале не может быть повторно использовано, обратитесь к столбцу log_reuse_wait_desc таблицы sys.databases" - тебе вслух прочитать?
|
|||
2
Serg_1960
19.03.10
✎
10:30
|
(1) Нее... Ты по слогам прочти. А лучше скажи что делать-то?
|
|||
3
Defender aka LINN
19.03.10
✎
10:31
|
(2) Я ж тогда его зряплату буду требовать :)
|
|||
4
Serg_1960
19.03.10
✎
10:35
|
А ху-ху не хо-хо? :))
|
|||
5
Шляпентох
19.03.10
✎
10:35
|
Перезагрузите сервер с MS SQL Server. Или службу перезапустите. tempdb пересоздастся. Если места все равно будет мало - перенесите файл журнала tempdb на диск где больше свободного места, или сделайте дополнительный файл журнала templog на другом жестком диске.
|
|||
6
knyazevs
19.03.10
✎
10:36
|
(1) мда уж, помощник из тебя никудышний.
|
|||
7
Шляпентох
19.03.10
✎
10:37
|
+(5) А "отчего" - оттого что у вас активно tempdb используется, лог растет и, дорастая до определенного момента, больше не может увеличиться, вероятно из-за того, что место на диске кончается
|
|||
8
Serg_1960
19.03.10
✎
10:42
|
Одно из двух: или места на дисве уже нет, или это действительно ошибка SQL. Что у автора?
|
|||
9
Шляпентох
19.03.10
✎
10:44
|
Это не одно из двух. Это одно и то же. Нет места на диске => templog.ldf не может увеличиться => ошибка. Есть еще вариант, что файлу жестко задан максимальный размер, который и достигается в ходе выполнения его процедуры, но думаю, что если бы он сам занимался сайзингом файлов, такого вопроса как (0) - не было бы
|
|||
10
Defender aka LINN
19.03.10
✎
10:47
|
(6) Всяко лучше, чем из тебя работник.
|
|||
11
Serg_1960
19.03.10
✎
10:49
|
(9) Сорри, опровергая меня, Вы сами себе противоречите :( Вариантов, на самом деле, может быть множество. Особенно если кривые ручки приложить к SQL :)
|
|||
12
Serg_1960
19.03.10
✎
10:50
|
||||
13
Шляпентох
19.03.10
✎
10:54
|
(11) Да я не то что опровергаю.. Просто это ошибка, вызванная, скорее всего, нехваткой места на диске.. А не так, что "или нет места на диске", или "ошибка". К формулировке, в общем, придрался (:
А (12) вряд ли автору поможет. tempdb по умолчанию использует модель восстановления simple |
|||
14
hhhh
19.03.10
✎
10:55
|
(13) скоре всего всё-таки, товарищ написал запрос, котрый пишет в tempdb сотни гигабайт.
|
|||
15
knyazevs
22.03.10
✎
00:06
|
(1)(10) Парнишка, ты сильно переоцениваешь свои остаточные знания после начальных классов.
Веди себя нормально, и пиши по делу. Строить из себя умника любой дурак может. |
|||
16
knyazevs
22.03.10
✎
00:29
|
(5)(8) Перезагруз сделал, tempdb пересоздался. Место и до этого в принципе имелось - 25 гигов. Знаю, что это не сильно уж много. Скажите, пожалуйста, на сколько такой объем критичен.
Сама база весит: mdf - 4Гб, ldf - 16Гб. После перезагруза стало свободно 33 гига. Образовалась еще одна странная ситуация. Вообще вышеописанная ошибка выскочила у пользователя, у которого стоит 1Ска и он напрямую цепляется к базе. А если коннектишься из-под сессии терминального сервера (на который не все юзеры хотят заходить), то отчет "Продажи по оплате за период" просто напросто виснет, и хоть сколько угодно будет висеть, ниче не сформирует. (14) Отчет стандарный, не модифицированный, у регистров накопления измерения не трогал, ниче не менял. Сделал select к таблице sys.databases, в столбце log_reuse_wait_desc для торговой базы значение равно "LOG_BACKUP", что до перезагруза, что после. В этом же столбце для tempdb значение равно "ACTIVE_TRANSACTION" (это во время того, как база висит). Завтра попробую заглянуть в этот же столбец после того, как тот пользователь с 1Ской у себя на компе попробует сформировать отчет. |
|||
17
Рэйв
22.03.10
✎
00:43
|
(0)Господи, ну сколько вас учить то еще....
http://yandex.kz/yandsearch?text=HRESULT%3D80040E14&lr=162&stpar2=%2Fh1%2Ftm1456%2Fs4&stpar4=%2Fs4&stpar1=%2Fu0 |
|||
18
knyazevs
22.03.10
✎
00:47
|
(5)(8)
Пока отчет висит в терминалах, наблюдаю за скулем. База tempdb за полчаса разрослась почти на 2 гига. Т.е. уже четко ясно, что дело в запросе отчета. Пробую сформировать отчет за месяц - все ок, формируется быстро, в течение полминуты. Если беру интервал: два месяца, полгода. Висит... уже больше часа висит. И проц при этом на скуль-сервере загружен на четверть. |
|||
19
knyazevs
22.03.10
✎
00:57
|
(17)
Рейв, спросил у Яндекса по твоей ссылке, но толком ниче не нашел, все да не то. Там ошибка 80040E14 много че означает. Скажи, пожалуйста, куда копать? В изменение размера tempdb все-таки? |
|||
20
Рэйв
22.03.10
✎
01:10
|
(19)Я, извини,не телепат. Тебе на месте скорее всего придется решать самому.
|
|||
21
Soldy
22.03.10
✎
01:17
|
(19)Обрати внимание на (9).Попробуй на скуле установить больший максимальный размер templog.ldf, также задай больший размер динамического увеличения этого файла.
|
|||
22
knyazevs
22.03.10
✎
08:53
|
(21)
начальный размер - 8Mb, увеличение размера файлов - 10%, макс.размер файла - рост не ограничен. Че именно поменять, скажите? |
|||
23
Шляпентох
22.03.10
✎
09:58
|
(22) Ничего менять не надо. Раз у вас размер ldf файла не ограничен, значит ошибка в (0) следствие того, что на диске где лежит templog.ldf закончилось место.
"ACTIVE_TRANASACTION" в столбце log_reuse_wait_desc говорит вам о том, что есть незавершенная транзакция, которая не дает повторно использовать место в файле журнала транзакций. У вас ошибка "Microsoft OLE DB Provider for SQL Server: Журнал транзакций для базы данных "tempdb" заполнен." повторяется? В момент ошибки на диске с templog.ldf есть 25 свободных гигабайт? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |