将数据库缩小到其初始大小以下
我有一个SQL Server 2005开发数据库,它是实时的30GB副本。我们删除了一些dev中不需要的数据,这使使用的数据文件空间减少到20GB。因此,我们约有33%的未使用。 我需要回收空间,这将允许我们在服务器上拥有第二个开发数据库(基于缩减版本);但是,我无法回收空间,我做了以下工作: 文件的初始大小SMS2_Data为30GB。 DBCC SHRINKFILE (N'SMS2_Data' , 0, TRUNCATEONLY) 其次是 DBCC SHRINKFILE (N'SMS2_Data' , 19500) 不开心 我尝试进行备份,创建一个初始大小较小的新数据库,然后还原,但由于初始大小被覆盖而感到不高兴。也尝试过: ALTER DATABASE SMS2HazSub MODIFY FILE (NAME = 'SMS2_Data', SIZE = 20000) 这是错误的,说: 修改文件失败。指定的大小小于当前大小。 我尝试了20800,然后一直提高到29000(29GB),但仍然不允许我更改它。 完成收缩后,将恢复模式从更改FULL为SIMPLE,然后再次更改。不开心 我认为这与某些TEXT领域有关。我们整个系统中大约有6个。因此,作为测试,我将它们全部删除,然后缩小了文件,但仍然没有变化。 剩下的唯一选择是将数据重新导入到另一个数据库。这是不切实际的,因为必须在实时数据库上进行,因为这样做会带来很大的风险。我们半定期地获取实时数据库的副本并覆盖dev / test。我们有大约500张桌子。我想要一种不会将数据导出到新数据库的风险的方法。 我尝试将数据移动到另一个文件,它复制了除5%之外的所有数据。这就是导致我尝试删除所有文本列的原因。 服务器处于兼容模式90,但为SP2。我现在做了以下3次:重新索引所有表,备份数据库,收缩文件,收缩数据库。仍然没有喜悦。 EXECUTE sp_spaceused 返回: database_name database_size unallocated space SMS2Tests 31453.94 MB …