Прежде чем делать какие-либо структурные изменения в вашей базе данных, сделайте FULL Database Backup.
Если, как вы говорите, большая часть нераспределенного пространства находится в вашем файле данных SQL Server (.mdf), вам следует использовать DBCC SHRINKFILE , а не DBCC SHRINKDATABASE.
Так, например:
USE UserDB;
GO
DBCC SHRINKFILE (LogicalDataFileName, target_sizeInMB );
GO
Дополнительно рассмотрите возможность использования опции TRUNCATEONLY , чтобы освободить доступное пространство только в конце файла данных. Это менее ресурсоемкий вариант, но он не может освободить столько места. Имейте в виду, target_size игнорируется, если указано с TRUNCATEONLY.
Вы можете запустить это обслуживание на производственном сервере, однако у вас может возникнуть повышенная блокировка, и поэтому следует следить за тем, чтобы планировать обслуживание на период низкой активности, если время простоя не является для вас вариантом. Однако пользователи могут по-прежнему запрашивать базу данных.
В свете ваших правок:
DBCC SHRINKDATABASE попытается сжать все файлы в вашей базе данных, то есть файлы данных и журналов.
DBCC SHIRNKFILE, с другой стороны, обеспечивает более высокий уровень контроля в том, что он применяется к конкретному файлу.