Первый запуск
exec sp_spaceused
в базе данных, чтобы проверить, сколько вы можете восстановить.Если вы обнаружите, что на нем не отображается неиспользуемое пространство, значит, вы неправильно поняли распределение пространства.
Именно так я обычно сжимаю свой test1
дБ, где я воспроизводю все мои запросы StackOverflow.Я просто сократил его с 3 ГБ до 8 МБ.
use test1;
exec sp_spaceused;
checkpoint;
alter database test1 set recovery simple;
alter database test1 set recovery full;
dbcc shrinkfile(1,1);
dbcc shrinkfile(2,1);
Для чего это стоит, это то, что я использую, чтобы проверить размер распределения по таблице.Может быть, вы проверяли неправильно?Сюда входят индексы.
select object_name(id), SUM(dpages*8), COUNT(*)
from sysindexes
group by id
РЕДАКТИРОВАТЬ - на основе таблиц, занимающих место, отредактированное в вопросе
Комментарий Мартина перенесен в ответ: соответствующие таблицы являются диалогами компонента Service Broker.http://social.msdn.microsoft.com/Forums/en/sqlservicebroker/thread/03180f45-cd83-4913-8f0e-3d8306f01f06 Ссылка имеет обходной путь.
Есть альтернатива;используя уже урезанную базу данных
- Создать сценарий - все объекты - включить все параметры (ключи, полный текст, значения по умолчанию и т. д.)
- включить параметр для данных сценария
- Создайте новую базу данных и заполните ее из сценариев
(Исходя из воспоминаний, очереди SSSB не включаются в сценарии создания данных)