2012-04-06 8 views
2

Я использую базу данных SQL Server в моей программе с Linq-на-SQLУдалить из базы данных SQL Server

Я использую этот код, чтобы опустошить к базе данных

db.Tb1.DeleteAllOnSubmit(db.Tb1.Select(x => x)); 
db.SubmitChanges(); 

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

Я имею в виду размер базы данных по-прежнему то же самое после того, как я использую этот код, когда он не имеет никаких данных

Извините за плохой английский

+0

если у вас есть только одна таблица, у вас есть только одна таблица Tb1 в вашем db –

+0

, если я создам другую таблицу в БД, эта проблема будет решена? – Asem

ответ

3

Вот как SQL работы сервера. Пробел не возвращается, если вы вручную не запускаете операцию «Свободное неиспользуемое пространство» в базе данных, которая реорганизует, как записи физически хранятся в вашем файле базы данных. В противном случае неиспользуемое пространство сохраняется и повторно используется при добавлении новых записей.

+0

Обратите внимание, что сокращение базы данных приводит к сумасшедшим фрагментам. – usr

+0

моя база данных прикреплена, как я могу освободить неиспользуемое пространство на БД – Asem

+0

@Asem: это грязный механизм kludgy - с «прикрепленной» базой данных, есть много чего вы не можете сделать. Я бы рекомендовал привязать вашу базу данных к экземпляру SQL Server, который у вас уже есть на вашей машине, и использовать его таким образом - тогда вы можете делать такие вещи ... –

2

База данных не сжимает свои файлы данных всякий раз, когда строки удаляются. Вы должны попросить сервер сжать свои файлы, например, с помощью команды T-SQL DBCC SHRINKDATABASE (см. MSDN Documentation for DBCC SHRINKDATABASE). Основной причиной такого поведения, вероятно, является снижение производительности. Кроме того, сервер будет повторно использовать бесплатные страницы. Для баз данных, которые регулярно удаляют большие наборы строк или обрезают полные таблицы, вы можете планировать сокращение в качестве задачи обслуживания. Затем вы должны дополнительно запланировать обновление вашей статистики базы данных (команда T-SQL UPDATE STATISTICS) для этой таблицы.

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