Назад | Перейти на главную страницу

Техническое обслуживание SQL Server 2005 TempDB

Я работаю с базой данных SQL Server 2005, в которой есть 8 файлов в 1 файловой группе для TempDB. Первоначальный размер 1-го файла составляет 8 МБ, а остальных 7 - 2 ГБ. Эта база данных представляет собой базу данных отчетов, которая заполняется каждую ночь из пакета SSIS. В пакете и отчетах используется множество временных таблиц.

Файлы выросли до 300 ГБ и распределяются равномерно. Его объем неограниченно увеличится на 200 МБ. TempDB не имеет резервной копии и находится в SAN.

Я прочитал, что вы не должны использовать SHRINKDATABASE или SHRINKFILE в TempDB. Каков правильный способ выполнения обслуживания в этой ситуации, чтобы гарантировать, что мы не исчерпаем дисковое пространство и сохраним TempDB компактным и средним?

Спасибо за любые советы и знания.

Вот статья 307487 от Microsoft как раз об этом.

Все сводится к нескольким основным способам:

  1. Перезапустите экземпляр SQL
  2. Используйте DBCC SHRINKDATABASE
  3. Используйте DBCC SHRINKFILE

У всех из них есть свои проблемы, как вы знаете, но я не уверен, как аккуратно выполнить эту задачу, поскольку вы, по сути, имеете дело с одной из самых важных баз данных в данном случае. Я бы подумал, что если вы можете позволить себе отключить экземпляр на несколько минут, это будет лучшим вариантом.

Имейте в виду, что если ваша база данных tempdb выросла так сильно, есть большая вероятность, что она снова туда попадет. Если это серьезная проблема, вам следует выяснить, почему база данных tempdb становится такой большой, и спланировать ее соответствующим образом. Основная причина, по которой люди недовольны операциями сжатия, заключается в том, что базы данных имеют тенденцию расти настолько большими, насколько им необходимо, если что-то не делается неправильно. Это может не относиться к вам, но это просто общий отказ от ответственности, который я даю по любым вопросам, касающимся сжатия базы данных.