Привет,
мой TEMPDB.mdf вырос до 42 ГБ на MS SQL Server 2005, установленном на Windows Server 2003.
Последнее изменение даты - 31.01.2013, ночь.
Итак, мне интересно, можно ли его уменьшить?
Рекомендую прочитать технет-статью, «Работа с tempdb в SQL Server 2005». Я не рекомендую пытаться сжать базу данных tempdb, поскольку она используется в основном как временная база данных для хранения промежуточных результатов запросов, среди прочего, во время работы SQL, а операция сжатия, вероятно, даже не будет работать с tempdb. Способ временного уменьшения размера базы данных tempdb - это не операция сжатия. Просто перезапустите SQL-сервер - SQL удалит базу данных tempdb и скопирует базу данных модели, чтобы создать новую базу данных tempdb. Это единственный метод, который я бы использовал для временного восстановления контроля над tempdb, если дисковое пространство является проблемой.
Если база данных tempdb постоянно увеличивается до этого размера, значит, у вас есть процесс (или процессы) базы данных, который одновременно работает с большим количеством данных в базе данных tempdb, вызывая их рост. Если это так, то единственный способ предотвратить его рост в будущем - это определить, что это за процесс (ы), и изменить их. Если этот рост - разовая сделка, которую вы раньше не видели, то вы, вероятно, можете просто перезапустить SQL-сервер и больше не беспокоиться об этом, но если он продолжает увеличиваться до этого размера, и вы не можете определить, почему или измените свои внутренние запросы и сохраненные процессы, чтобы не использовать tempdb в такой степени, тогда вам, вероятно, следует просто установить размер tempdb чуть больше 42 ГБ, чтобы уменьшить фрагментацию, вызванную автоматическим ростом.
Также читайте «Как уменьшить размер базы данных tempdb в SQL Server». В нем подробно описаны 3 метода для этого. Вы можете выполнить 2 из 3 без перезапуска SQL-сервера, но оба они не требуют активности в tempdb, что довольно сложно получить на работающем SQL-сервере.
вы также можете просмотреть свои запросы и перекодировать их, чтобы они меньше влияли на базу данных tempdb.