Ошибка при выполнении операции с базой 1С 8: Не удалось выделить новую страницу для базы данных "TEMPDB" из-за нехватки места на диске в файловой группе "DEFAULT".
 
Описание ошибки:
Ошибка СУБД
Microsoft SQL Server Native Client 11: Не удалось выделить новую страницу для базы данных "TEMPDB" из-за нехватки места на диске в файловой группе "DEFAULT". Создать необходимое пространство, удалив объекты в файловой группе, добавив дополнительные файлы в файловую группу или указав параметр автоматического увеличения размера для существующих файлов в файловой группе.
HRESULT=80040E14, SQLSrvr: SQLSTATE=42000, state=A, Severity=11, native=1101, line=1

Найденные решения:

Ошибка возникла в процессе выполнения обработки по сбору данных по ценам и остаткам в базе для выгрузки на сайт. Как понятно по тексту ошибки - база клиент-серверная. СУБД - MS SQL.

Нажатие на изображении увеличит его
1С 8 ошибка при выполнении обработки в базе данных, сборе данных, Не удалось выделить новую страницу для базы данных TEMPDB из-за нехватки места на диске в файловой группе DEFAULT

Перед этим была выполнена доработка запроса в части сбора данных по ценам и остаткам в базе для выгрузки на внешний ресурс, а точнее сайт. Запрос уже до доработки выбирал данные в разрезе двух видов цен. После доработки был добавлен сбор данных еще по двум типам цен. Но известно, что примерно по каждому типу цен записей в базе не больше 150 тысяч, значит на 4 вида цен - не больше 600 тысяч строк должны были быть выбраны запросом. И судя, по тексту ошибки, не хватило места для результата выборки. И да, и нет. Четкое понимание проблемы подсказала статья на сайте AskDev.ru: Ошибка SQL-запроса недостаточно места на диске. Пришло понимание, что в доработанном запросе был упущение - не указаны связи для добавленных таблиц выборки по типам цен. Таким образом получилось, что результат стал включать все варианты с учетом двух таблиц, а это уже как минимум 150 * 10(от исходной части запроса) *150 * 103 *150 * 103 (по 150 от двух новых таблиц) - примерно 3375 * 1012 строк результата выборки. Понятно, что не каждый сервер поддержит получение такого результата.

Нажатие на изображении увеличит его
1C 8, ошибка выполнения запроса, ошибка СУБД, Microsoft SQL Server Native Client 11: Не удалось выделить новую страницу для базы данных tempdb из-за нехватки места на диске в файловой группе default

Поэтому необходимо вспомнить при возникновении "ошибки СУБД, Microsoft SQL Server Native Client 11: Не удалось выделить новую страницу для базы данных "TEMPDB" из-за нехватки места на диске в файловой группе "DEFAULT", не было ли перед этим выполнено некорректных доработок в плане сбора данных или обработки массивного объема данных.

В общем случае просто база перезапускается. Если же запуск не происходит и сопровождается такой же ошибкой, то можно проделать следующие действия, которые можно найти среди многих, но которые больше применимы к связке программ 1С и MS SQL, по ссылке AskDev.ru: Ошибка SQL-запроса недостаточно места на диске:

- Перезапустить службу MS SQL Server. Это должно обеспечить воссоздать таблицу tempdb базы данных.
- Выполнить сжатие файла журнала таблицы tempdb. Как выполнить такое сжатие - можно обратившись к англоязычной статье по этой теме на сайте blogs.lessthandot.com-Dealing with the could not allocate new page for database TEMPDB. There are no more pages available in filegroup DEFAULT error message. См. скрин актуальной части статьи по этому вопросу ниже.

Нажатие на изображении увеличит его
1С 8, как исправить, устранить, убрать ошибку СУБД, Microsoft SQL Server Native Client 11, Создать необходимое пространство, удалив объекты в файловой группе, добавив дополнительные файлы в файловую группу или указав параметр автоматического увеличения размера для существующих файлов в файловой группе

Немного справки по таблицу tempdb у СУБД MS SQL в переводе с той же страницы на сайте blogs.lessthandot.com

Итак, что вызывает это (ошибку yе удалось выделить новую страницу для базы данных "TEMPDB" из-за нехватки места на диске в файловой группе "DEFAULT")? Вы можете подумать, что tempdb используется только для временных (#temp или ## temp) таблиц, но это неверно, tempdb используется для многих вещей, а с SQL Server 2005 он используется чаще, чем когда-либо. Вот некоторые вещи, для которых используется tempdb:
- Если вы выполняете какой-либо запрос, и для этого требуется больше памяти, чем доступно в ОЗУ, он также перейдет в tempdb.
- Если у вас есть большие наборы результатов, и вы используете объединения, группировку, внешние объединения, курсоры и т.д.
- Если вы используете временные таблицы
- Незавершенная транзакция, которая не была откатана
- DBCC CHECKDB будет использовать tempdb, чем больше ваша база данных, тем больше места DBCC CHECKDB потребуется от tempdb. Если вы создаете или перестраиваете индексы с параметром SORT_IN_TEMPDB = ON

Получается, что лучше все-таки сократить базу данных "tempdb". Если этого не сделать, то при последующей попытке вызова кода, даже если были внесены правильные корректировки можно получить ошибку:
Ошибка СУБД:
Microsoft SQL Server Native Client 11.0: Журнал транзакций для базы данных "tempdb" заполнен. Чтобы обнаружить причину, по которой место в журнале не может быть повторно использовано, обратитесь к столбцу log_reuse_wait_desc таблицы sys.databases
HRESULT=80040E14, SQLSrvr: SQLSTATE=42000, state=4, Severity=11, native=9002, line=1

1С 8, ошибка субд, журнал транзакций для базы данных "tempdb" заполнен

Нажатие на изображении увеличит его
1C 8, ошибка СУБД, журнал тразнакций для базы данных tempdb заполнен, обратитесь к столбцу log_reuse_wait_desc таблицы sys.databases

Если открыть таблицу "tempdb" в SQL Server Management Studio, то можно наблюдать временные таблицы, которые занимают все оставшееся свободное пространство на системном жестком диске. Место на диске заканчивается, объем таблицы не очищается и дальнейшая работа может быть невозможна.

Нажатие на изображении увеличит его
1С 8, системная база данных tempdb на MS SQL, временные таблицы

Если обратиться к рекомендациям, описанным выше, то для очистки журнала был выбран вариант перезапуска служб, связанных с MS SQL. Был выполнен последовательный перезапуск (остановка и запуск) служб SQL Server (MSSQLSERVER) и Агент SQL Server (MSSQLSERVER).

Нажатие на изображении увеличит его
1С 8 и СУБД MS SQL, очистка, shrink, шринк временых таблиц, перезапуск служб MSSQLServer

В результате данных операций свободное пространство на системном жестком диске высвободилось. Временные таблицы удалились сами естественным образом. Дальнейшая работа доработанного функционала была восстановлена.

1С 8 и СУБД Microsoft SQL, очитска, шринк, shrink, временных таблиц базы tempdb

 

 

P.S.: Так же эта ошибка стала причиной еще другой попутной ошибки. Т.е. тесно связанной. Когда база была закрыта с помощью соответствующей кнопки в окне ошибки, то после этого запустить базу ни в режиме конфигуратора, ни в режиме Предприятия не получалось, запуск 1С 8 сопровождался ошибкой "Ошибка при работе с файлом". Как была устранена ошибка читайте в следующей статье.

1С 8, как исправить, устранить, убрать, ошибку при работе с файлом

Оцените, помогло ли Вам предоставленное описание решения ошибки?

© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

05-10-2021

Журавлев А.С. (Сайт azhur-c.ru)

 
 

Здесь можно
приобрести лицензии

1С 8
​ и типовые решения

ural-rosaudit.ru - Аудит в сфере ЖКХ, www.ural-rosaudit.ru
azhur-blog.ru - мошенничество в интернете, www.azhur-blog.ru
info-compas.ru - каталог, инфокурсы, видеокурсы, видео курсы, обучение он-лайн, www.info-compas.ru
https://vk.com/effective_ideas - Группа вКонтакте Методы заработка и работы при помощи Интернет

 

Проверить аттестат
Cистема приема платежей, касса для сайта
Cистема управления контентом Santafox&trade. Санкт-Петербург, Ленинский проспект, д. 23 (812) 545-47-48
Яндекс.Метрика