![在 SQL Server 2019 dev ed 上恢复或调整数据库大小时磁盘空间不足](https://linux22.com/image/793418/%E5%9C%A8%20SQL%20Server%202019%20dev%20ed%20%E4%B8%8A%E6%81%A2%E5%A4%8D%E6%88%96%E8%B0%83%E6%95%B4%E6%95%B0%E6%8D%AE%E5%BA%93%E5%A4%A7%E5%B0%8F%E6%97%B6%E7%A3%81%E7%9B%98%E7%A9%BA%E9%97%B4%E4%B8%8D%E8%B6%B3.png)
奇怪的问题:我尝试从下载的备份文件中恢复 AdventureWorks2019,并不断收到错误
SQL 错误 [3257] [S0001]:磁盘卷“C:”上的可用空间不足,无法创建数据库。数据库需要 285212672 个额外的可用字节,而可用空间只有 142028800 字节。
磁盘卷“C:”上的可用空间不足,无法创建数据库。数据库需要 285212672 个额外的可用字节,而可用空间只有 142028800 字节。磁盘卷“C:”上的可用空间不足,无法创建数据库。数据库需要 285212672 个额外的可用字节,而可用空间只有 142028800 字节。
尽管驱动器 C: 包含 21+GiB 的可用空间。
尝试从 SSMS 或通过 SQL restore-command 进行恢复没有任何区别。
尽管如此,我还是试图释放›额外的金额‹,但是无济于事。
测试数据库的备份和恢复成功了,尽管它改变了 AdventureWorks 错误消息中的可用字节数。所以我想,SQL Server 实际上在寻找正确的文件夹。备份文件能可以在 SQL Server 的不同实例 (2022) 中恢复,因此它不是某些隐藏的日志大小爆炸式增长(无论如何,这会产生不同的数字)。
SQL Server 已使用“KB5029377 - SQL Server 2019 GDR 的安全更新”进行更新,但这也没有改变什么。
重置数据文件夹上的只读标志也没有改变任何东西。
由于我一点儿也不知道为什么会报告错误的数字,甚至不知道如何报告,所以我有点束手无策了……有人有什么想法吗?(这甚至可能是一种已知行为吗?除了 stackoverflow 上的一个 11 岁帖子外,我什么也没找到。)
添加:将数据库导出为数据层并在相关服务器上导入 .bacpac 文件也不起作用,出现相同的错误:磁盘空间不足。
那么该服务器似乎实际上在其数据文件夹中看到了错误的可用大小!?
补充2:卸载并重新安装 SQL Server 也没有任何效果。仍然是同样的错误。
添加 3:不同的实例名称、不同的数据文件夹名称以及使用下载选项和从 iso 映像重新安装也无济于事。
答案1
MSSQL 和文件系统对磁盘大小的分歧非常罕见。很久以前,有一段时间,程序无法理解大于某个值的磁盘(2G?4G?8G?是的,已经很久了。)并且会查看(例如)4.5GB 的磁盘并丢失 4GB 部分,认为磁盘只有 0.5GB。不过,对于 2019 年的程序来说,这种情况不太可能发生。
更有可能的是,有人以某种方式设置了磁盘配额,无论是在 MSSQL 用户上还是在 MSSQL 数据文件夹中。这实际上是我要检查的事项列表中的首要事项,特别是因为可用空间量相当接近“整数”,在本例中为 150MB。