2015-07-31 3 views
2

У меня есть база данных 31 ГБ, которую я получил от клиента для проекта. Я кодирую и сохраняю базу данных в 80 ГБ Win7 VM. Я получил файл db и импортировал базу данных, и обнаружил, что пространство было съедено в основном одной таблицей, с 240 000 изображений. Я сбросил большую часть этих строк и теперь имею 29 000 МБ. Я не могу выполнять множество функций, потому что диск работает до последних нескольких ГБ, и до сих пор существует много записей для изменения (я меняю тип данных в нескольких таблицах, но продолжаю получать ошибку active_transaction). Он не сокращается через DBCC_SHRINKDATABASE(0) или Tasks > Shrink > Database или файлы. Кажется, он только сжимается до размера базы данных, когда я ее впервые получил. Как я могу освободить это пространство? Если я могу, могу ли я экспортировать какие данные все еще есть в меньшую базу данных, а затем восстановить из этого?База данных SQL Server не будет сокращаться

Запуск SQL Server 2012 и Management Studio.

Спасибо,

Tony

+0

Какую модель восстановления вы используете? – JSR

+0

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

+0

Запустите этот запрос «SELECT name, recovery_model_desc FROM sys.databases», чтобы найти свою модель восстановления. Если модель восстановления FULL, вам нужно будет сделать резервную копию файла журнала, прежде чем операции сжатия будут эффективными. – JSR

ответ

1

Вы не можете установить dbcc shrinkdatabase ниже начального размера. Если исходный размер вашей базы данных установлен в 50 ГБ - MDF всегда будет не менее 50 ГБ, даже если 29 ГБ является бесплатным/доступным.

Если у вас действительно есть свободное место, вы можете снизить начальный размер до более разумного значения, но если MDF будет просто автоматически расти, это не рекомендуется, так как оно несет высокие накладные расходы.

Для этого вы должны использовать dbcc shrinkfile.

Для получения дополнительной информации см. here.

0

Эта страница описывает, как сделать резервные копии SQL-сервера. https://msdn.microsoft.com/en-us/library/ms186865(v=sql.110).aspx

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