Это старый вопрос, но я только что натолкнулся на него.
Действительно короткий и правильный ответ уже дан и имеет большинство голосов. То есть как вы уменьшаете журнал транзакций, и это, вероятно, было проблемой OPs. И когда журнал транзакций выходит из-под контроля, его часто приходится сокращать обратно, но следует позаботиться о том, чтобы в будущем ситуация с журналом не вышла из-под контроля. Этот вопрос на dba.se объясняет это. В основном - не позволяйте ему стать настолько большим, во-первых, благодаря правильной модели восстановления, ведению журнала транзакций, управлению транзакциями и т. Д.
Но при чтении этого вопроса о сжатии файла данных (или даже файла журнала) у меня возникает больший вопрос: почему? и что плохого происходит при попытке? Похоже, что операции сжатия были сделаны. Теперь в этом случае это имеет смысл в некотором смысле - потому что выпуски MSDE / Express ограничены максимальным размером БД. Но правильным ответом может быть поиск правильной версии для ваших нужд. И если вы натолкнулись на этот вопрос, пытаясь уменьшить свою производственную базу данных, и это не причина, почему, вы должны задать себе вопрос почему? .
Я не хочу, чтобы кто-то искал в Интернете «как уменьшить базу данных», сталкиваясь с этим и думая, что это круто или приемлемо.
Сжатие файлов данных - это специальное задание, которое следует зарезервировать для особых случаев. Учтите, что когда вы уменьшаете базу данных, вы эффективно фрагментируете свои индексы. Учтите, что когда вы уменьшаете базу данных, вы забираете свободное пространство, в которое база данных может когда-нибудь снова вырасти, - эффективно тратите свое время и наносите удар по производительности операции сжатия только для того, чтобы увидеть, как БД снова растет.
Я писал об этой концепции в нескольких постах в блоге о сокращении баз данных. Вначале приходит на ум это " Не трогайте эту кнопку сжатия ". Я говорю об этих концепциях, изложенных здесь, а также о концепции «правильного определения размера» вашей базы данных. Гораздо лучше решить, каким должен быть размер вашей базы данных, спланировать будущий рост и распределить его на эту сумму. Мгновенная инициализация файлов, доступная в SQL Server 2005 и более поздних версиях для файлов данных, снижает стоимость прироста - но я все же предпочитаю иметь правильное начальное приложение - и я гораздо меньше боюсь пробелов в базе данных, чем я сжимается вообще без мыслей в первую очередь. :)