Сбой SQL-запроса недостаточно места на диске

Сообщение 1101, уровень 17, состояние 10, строка 12 Не удалось выделить новую страницу для базы данных 'TEMPDB' из-за недостатка места на диске в файловой группе 'DEFAULT'. Создайте необходимое пространство, удалив объекты в файловой группе, добавив дополнительные файлы в файловую группу или установив автоматический рост для существующих файлов в файловой группе.

Что это значит на простом английском.

3 ответа

Решение

Я обнаружил, что нормальной причиной такого взрывного роста TempDB является запрос, либо специальный, либо хранимой процедуры, в котором есть неожиданное соединение "многие ко многим", которое некоторые называют "случайным перекрестным соединением"., За кулисами он может создавать буквально миллиарды внутренних строк, которые в конечном итоге живут в "рабочих" таблицах, которые находятся в TempDB.

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

И нет... вам не нужно проверять, находится ли TempDB в режиме восстановления "ПРОСТОЙ", потому что вы не можете установить его на что-либо другое. Попробуйте и посмотрите.

Это означает, что ваша база данных tempdb заполнена

вы можете

  1. Перезапустите службу SQL Server, это создаст базу данных tempdb
  2. Добавить другой файл на другой диск с большим количеством места
  3. Сожмите файл журнала tempdb

См. Работа с не удалось выделить новую страницу для базы данных "TEMPDB". В файловой группе нет сообщения об ошибке DEFAULT для более подробной информации

  1. Остановите службу агента мониторинга системы Citrix
  2. Остановите сервер Firebird - службу CSMInstance
  3. Удалите базу данных firebird RSDATR.FDB, расположенную в C:\Documents and Settings\ Все пользователи \ Данные приложения \Citrix\ Системный мониторинг \ Данные
  4. Перезапустите сервисы
Другие вопросы по тегам