我无法删除文件组。我收到标准错误:“无法删除文件组 '~~~~',因为它不为空。” 我一直在网上搜索,但仍然找不到答案。服务器版本为 Microsoft SQL Server 2019。
我已经非常彻底地经历了这两个:
我扫描的内容以查看是否与文件组有任何关联:
- 文件 : 0
- 分配单位:0
- 指数:0
- 分区方案:0
- 分区函数:0
- 分区:0
我还运行了 DBCC CHECKFILEGROUP,它也没有显示任何内容。我真的很困惑。有人可以帮我弄清楚还有什么可能阻止我删除这个文件组吗?
完全公开,我正在使用我写的模块:
https://github.com/tcartwright/tcdbtools/blob/main/docs/Invoke-DBSafeShrink.md
该模块执行以下步骤:
- 创建一个临时文件和文件组
- 将聚簇索引、非聚簇索引、LOBS 和堆移动到新文件组
- 缩小原始文件组
- 将所有原始对象移回原始文件组
- 删除临时文件组
作为移动 LOB 的一部分,我使用 Kimberly Tripp 的这个技巧来移动它们:https ://www.sqlskills.com/blogs/kimberly/understanding-lob-data-20082008r2-2012/
编辑:我想我已经弄清楚是什么阻碍了下降,但我不知道如何解决它。这个查询:
SELECT * FROM sys.[tables] AS [t] WHERE [t].[lob_data_space_id] IN (
SELECT [ds].[data_space_id] FROM sys.[data_spaces] AS [ds] WHERE [ds].[name] <> 'PRIMARY'
)
返回一个表,该表在分配单元中没有任何关联的 LOB 数据。我也不知道如何摆脱它。我有:
- 删除并重新创建此表的 PK
- 重建表上的所有索引并
这些都没有帮助。