2

SQL Server:孤立文件脚本 ID 文件不在分区架构/索引中。正在返回一个文件,当尝试删除时,SQL Server 抛出“非空”

a) 我还能对这个脚本做些什么来只返回“孤立”文件——“孤立”文件组/与分区架构或索引无关的文件?

b) 如果这已经足够了,那么当发出 alter db remove 文件时,其中一个文件怎么可能返回 - db 抛出“非空”?

b1) 文件/文件组曾经是一个分区的一部分,但是已经被合并了。通过 sql & 通过查看 @partition schemas 验证了这一点

b2) 文件显示大小为 128,我观察到这是文件可能的最小大小

WITH cte_file_relations
AS(
SELECT
related_to_nothing = CASE WHEN dataspaces_n_indexes.data_space_id IS NULL
AND dds.partition_scheme_id IS NULL
AND ds_alloc_units.data_space_id IS NULL
AND dataspaces_n_full_text_indexes.data_space_id IS NULL
THEN 1
ELSE 0 END
-- 
, [file_group_name] = fg.name
, filegroup_type_desc = fg.type_desc
, [filegroup_is_empty] = CASE WHEN df.data_space_id IS NULL THEN 1 ELSE 0 END
-- 
, [file_logical_name] = df.name
, [file_phys_name] = df.physical_name
, [file_empty?] = CASE df.size WHEN 128 THEN ''looks empty'' ELSE ''NOT empty'' END
--
, part_of_Partition_Scheme = CASE WHEN dds.partition_scheme_id IS NULL THEN 0 ELSE 1 END
, part_of_index = CASE WHEN dataspaces_n_indexes.data_space_id IS NULL THEN 0 ELSE 1 END
, part_of_full_text_index = CASE WHEN dataspaces_n_full_text_indexes.data_space_id IS NULL THEN 0 ELSE 1 END
, part_of_alloc_units = CASE WHEN ds_alloc_units.data_space_id IS NULL THEN 0 ELSE 1 END
FROM
sys.filegroups fg WITH ( NOLOCK )

LEFT JOIN sys.database_files df WITH ( NOLOCK )
ON fg.data_space_id = df.data_space_id

LEFT JOIN sys.destination_data_spaces dds
ON fg.data_space_id = dds.data_space_id

LEFT JOIN ( SELECT i.data_space_id FROM sys.indexes i GROUP BY i.data_space_id ) dataspaces_n_indexes
ON fg.data_space_id = dataspaces_n_indexes.data_space_id

LEFT JOIN ( SELECT i.data_space_id FROM sys.fulltext_indexes i GROUP BY i.data_space_id ) dataspaces_n_full_text_indexes
ON fg.data_space_id = dataspaces_n_full_text_indexes.data_space_id

LEFT JOIN ( SELECT data_space_id FROM sys.allocation_units GROUP BY data_space_id ) ds_alloc_units
ON fg.data_space_id = ds_alloc_units.data_space_id
)
select *
from cte_file_relations
WHERE related_to_nothing = 1

根据朋友的预感,我去缩小文件并查看总共 1 mb - 0.88 mb 免费。然后我查看了@其他我预计为空的文件。其中大多数 @ 1 mb 总空间,显示 0.94 mb 可用空间。

4

1 回答 1

1

Microsoft Sql Server 中的错误。

请参阅上一篇文章: http ://www.sqlservercentral.com/Forums/FindPost681162.aspx

在我的情况下尝试过这个并且能够删除文件。

于 2011-02-08T15:54:54.507 回答