无法删除文件组,因为它不为空错误

The filegroup cannot be removed because it is not empty Error

我在数据库中有一个文件组,其中没有无法删除的逻辑文件。错误消息指出文件组不为空。

我已使用以下查询验证不存在任何分区。

SELECT * FROM sys.partition_functions
SELECT * FROM SYS.PARTITION_RANGE_VALUES
SELECT * FROM SYS.PARTITION_SCHEMES

我也运行下面的查询试图找到与文件组相关的任何东西,但一无所获

SELECT
    au.*,
    ds.name AS [data_space_name],
    ds.type AS [data_space_type],
    p.rows,
    o.name AS [object_name]
FROM sys.allocation_units au
    INNER JOIN sys.data_spaces ds
        ON au.data_space_id = ds.data_space_id
    INNER JOIN sys.partitions p
        ON au.container_id = p.partition_id
    INNER JOIN sys.objects o
        ON p.object_id = o.object_id
ORDER BY ds.name;

SELECT *
FROM sys.filegroups fg
LEFT OUTER JOIN sysfilegroups sfg
    ON fg.name = sfg.groupname
LEFT OUTER JOIN sysfiles f
    ON sfg.groupid = f.groupid
LEFT OUTER JOIN sys.allocation_units i
    ON fg.data_space_id = i.data_space_id
WHERE i.data_space_id IS NULL;

select * from sys.allocation_units 
where data_space_id = (select data_space_id from sys.data_spaces where name = 'HL7');

此外,我已经能够备份数据库并恢复到不同的 SQL 服务器并重现这个问题。

还有什么可以检查以找出阻止删除文件组的原因?

我最近也有类似的情况。我运行

DBCC SHRINKFILE (N'myfile', EMPTYFILE)

之后我就可以删除文件了。

F运行kly 我没想到它会起作用,因为在我的例子中,文件组中没有其他文件。所以即使操作应该

Migrates all data from the specified file to other files in the same filegroup

没有文件可以将数据迁移到。但它奏效了!没有错误或警告。在我毫无问题地删除文件之后。猜测有一些混乱的条目困扰着 REMOVE FILE 而不是 SHRINKFILE。

试一试,post 此处显示您的结果。