SQL Server数据库填满了硬盘,释放空间是不可能的

我有1TB硬盘上的SQL Server 2008中的数据库,它填满了驱动器,只有4Kb免费。 MDF文件是323Gb,LDF是653Gb。 这个数据库所在的硬盘除了MDF和LDF之外没有其他文件,所以不可能释放驱动器上的任何空间。 主硬盘较小,但有足够的空间将MDF传输到该驱动器,以防万一。 该服务器位于客户站点的海外,目前不可能向服务器添加更多的磁盘空间。 因为数据库处于失败模式(由于没有磁盘空间),所以也不可能删除任何logging,并且它不响应大多数命令。 Db目前处于完全恢复模式,这就是LDF文件如此之大的原因。 这个数据库真的不需要完全恢复,所以我们计划将其切换到简单模式,这将节省我们很多的空间。 我也不在乎丢失LDF文件,但是我需要所有的数据。 我花了很多时间寻找解决这个问题的方法,但是我find的所有东西都是要么释放磁盘空间,要么增加更多的磁盘空间,目前这两种方法都不是一个选项。 我卡住了,任何帮助将不胜感激。

尝试将数据库切换到在线模式时,会出现以下日志。

由于无法访问>文件或内存不足或磁盘空间不足,无法打开消息945,级别14,状态2,行3数据库'DBNAME'。 有关详细信息,请参阅SQL Server错误日志。 消息> 5069,级别16,状态1,行3 ALTER DATABASE语句失败。 消息1101,级别17,状态12,行3由于文件组“DEFAULT”中磁盘空间不足,无法为数据库“DBNAME”分配新页面。 通过在文件组中删除>对象来创build必要的空间,向文件组中添加额外的文件,或者为文件组中的现有文件设置自动增长。

我发现以下解决scheme,但没有工作,由于在该驱动器上没有磁盘空间,并且由于数据库处于失败状态,我不能运行大多数命令。 – DBCC SHRINKFILE – 无法运行,因为执行“使用DBNAME”失败 – 分离数据库,然后更改MDF / LDF文件的位置,因为数据库处于脱机模式,所以无法运行分离。

我不知道还有什么要尝试。

谢谢。

这是因为你没有做备份 。 当您执行数据库备份时,您的日志文件(.LDF)将被清除。 你可以做一个真正的备份和收缩日志,或者你可以使用简单的恢复模式,并缩小数据库文件,以欺骗SQL Server认为你做了一个适当的备份,但它只会释放空间。 这将阻止您重播事务日志并回滚的能力。 在做这件事之前一定要明白这个含义。

当然,由于您的磁盘空间太大,这可能会失败,所以您可能需要先将驱动器扩展(这可能不容易),然后再执行任何命令。

如果磁盘卷使用NTFS 4K分配单元,则可以停止实例,压缩数据库文件(先执行最小操作),然后重新启动实例并使数据库联机。

另一个选项可能是使用iSCSI为服务器添加空间,然后将卷安装在现有卷下。 这是一个远投,但值得深入研究。