В чем разница между уменьшенной базой данных и файлом?

33
DBCC ShrinkDatabase()
DBCC ShrinkFile()
  1. Нужно ли выполнять обе команды DBCC, чтобы уменьшить базу данных?
  2. В чем разница между этими двумя выше?
Пол Уайт говорит, что GoFundMonica
источник

Ответы:

36

Просто...

  • DBCC ShrinkDatabase(): сжать все файлы
  • DBCC ShrinkFile(): только один файл

Например, у вас может быть проблема с резервной копией журнала, и она вышла из-под контроля, поэтому вы запускаете DBCC ShrinkFile().

Вы почти никогда не используете ShrinkDatabase.

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

Я бы не сжал ни один из файлов (mdf, ldf), если бы не было четкой причины. Файлы имеют размер, потому что они должны быть. Любые блоги, предлагающие сделать это в рамках регулярного обслуживания, вероятно, не понимают, как работает SQL Server.

ГБН
источник
2
Спасибо чувак. вы правы. Я только что прочитал блог Брента Озара ... он буквально ругается в своем блоге "Хватит сокращать ваши файлы базы данных. Серьезно. Сейчас".
И когда он делает то же самое, почему существуют разные аргументы?
Стефан Штайнеггер,
2

База данных по умолчанию имеет два файла

MyDb.MDF и MyDb.LDF

Файл MDF - это файл данных, в котором находится основной раздел. В зависимости от ваших потребностей, вы можете разбить базу данных на несколько файлов. Это делается для того, чтобы данные (одна или несколько таблиц) могли занимать несколько файлов, которые обычно помещаются на отдельные жесткие диски для достижения более высокой производительности.

Если вы уменьшаете базу данных, все файлы, связанные с этой базой данных, будут сокращены.

Если вы уменьшите файл, то только выбранный файл будет сокращен.

Вам нужно всего лишь использовать команду Shrink Database. Но обычно это не очень хорошая практика и не рекомендуется.

Если вы сообщите нам, в чем заключается проблема, с которой вы столкнулись, мы можем предоставить вам дополнительную информацию о том, как ее решить.

Радж Море
источник
Ой ... вопрос, наш производственный сервер исчерпал место на диске. Добавление большего количества дисков - это идеал, но мне было интересно, что еще мы можем сделать?
0

Скорее всего, мы используем только dbcc shrinkfile. sp_helpdb 'databasename' предоставляет список файлов данных и журналов в базе данных.

щелкните правой кнопкой мыши на mnagement studio, tasks-> shrink-> file показывает, сколько% вы можете сжать.

что бы мы ни сжимали, его можно вернуть на диск как свободное место.

Например: используйте 'databasename' dbcc shrinkfile (fileid, 100)

здесь 100 это 100 МБ

fileid может получить из sp_helpdb 'databasename'


источник