2016-12-07 2 views
2

У меня есть дамп базы данных SQL Server 2014, который составляет ок. 60GB большой. В SQL Server Management Studio для исходного БД показано, что «Данные ROWS» имеют начальный размер ~ 99000 МБ, а «LOG» имеет начальный размер ~ 25600 МБ.Как уменьшить размер базы данных SQL Server 2014

Теперь в базе данных есть таблицы представлений размером около 10 ГБ и которые я могу очистить/очистить.

После удаления данных внутри этих таблиц, каков наилучший способ уменьшить физический размер базы данных? Много сообщений, которые я обнаружил, имеют дело с SHRINKDATABASE, но некоторые статьи не рекомендуют его из-за плохой фрагментации и производительности.

Заранее спасибо.

+1

Есть ли конкретная причина, по которой вы хотите сжать ее? Потому что, даже если вы сократите его, он снова начнет расти. Кроме того, эти рекомендации не делают этого. Вы можете повредить производительность SQL, если вы сократите свою базу данных. –

+0

Да, нам нужно сделать это как можно меньше, потому что нам нужно поделиться им, а данные внутри таблиц, которые мы можем удалить, составляют около 40 ГБ. Таким образом, существует большой потенциал. – user1032465

+1

Причина, по которой люди не будут рекомендовать SHRINK, заключается в том, что это не «правильная» стратегия для обработки баз данных, работающих в производственных средах. Если вам нужно развернуть тест или разработку версии или поделиться им с другими разработчиками или чем-то подобным - я вижу мало причин, почему вы боитесь сокращения. Поэтому в зависимости от того, чего вы на самом деле пытаетесь достичь - сокращение может быть жизнеспособным. Просто не делайте этого на производственной версии, если вы не уверены в том, что делаете. (Я сжимал множество баз данных на протяжении многих лет - не мой первый выбор, но хорошо - это инструмент в коробке) –

ответ

0

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

USE YourDataBase; 
GO 
-- Truncate the log by changing the database recovery model to SIMPLE. 
ALTER DATABASE YourDataBase 
SET RECOVERY SIMPLE; 
GO 
-- Shrink the truncated log file to 1 MB. 
DBCC SHRINKFILE (YourDataBase_log, 1); 
GO 
-- Reset the database recovery model. 
ALTER DATABASE YourDataBase 
SET RECOVERY FULL; 
GO 
+0

ShrinkDatabase: сжимать все файлы ShrinkFile: всего один файл Например, у вас может быть проблема с резервным копированием журнала, и она вышла из-под контроля, поэтому вы запускаете DBCC SHRINKFILE. Вы почти никогда не используете ShrinkDatabase. – Krishneil

+0

Некоторые полезные ссылки для вас: read.https: //technet.microsoft.com/en-us/library/ms189080 (v = sql.105).aspx – Krishneil

+0

http://aboutsqlserver.com/2014/12/02/size-does-matter-10-ways-to-reduce-the-database-size-and-improve-performance-in-sql-server/ – Krishneil

0

Вместо использования DBCC SHRINKDATABASE Я предлагаю вам использовать DBCC SHRINKFILE, очевидно, ваши таблицы должны храниться на разных FileGroup. Затем вы можете уменьшить физический размер вашей базы данных, оптимизируя фрагментацию.

Надеется, что это может помочь

0

Вам нужно сжать ваш DataBase используя ниже запроса.

ALTER DATABASE [DBNAME] SET RECOVERY SIMPLE WITH NO_WAIT 
DBCC SHRINKFILE(PTechJew_LOG, 1) 
ALTER DATABASE [DBNAME] SET RECOVERY FULL WITH NO_WAIT 

После выполнения этого запроса проверьте свой файл журнала. Его работы.

Смежные вопросы