Jam*_*ter 5 sql-server datafile
我正在尝试从未使用的文件组中删除数据库中的所有文件。有两个文件总共约 1.5TB。我可以看到这些文件中现在还有大约 400mb,但我看不到它是什么或如何删除它。
select * from sys.allocation_units a --where data_space_id = 6
inner join sys.partitions b on a.container_id = b.hobt_id --type = 1
where data_space_id = 6
Run Code Online (Sandbox Code Playgroud)
--给了我以下结果集
SELECT * INTO #tmp_GridResults_1
FROM (
SELECT N'72057781944647680' AS [allocation_unit_id], N'1' AS [type], N'IN_ROW_DATA' AS [type_desc], N'72057777021059072' AS [container_id], N'6' AS [data_space_id], N'0' AS [total_pages], N'0' AS [used_pages], N'0' AS [data_pages], N'72057777021059072' AS [partition_id], N'741132535' AS [object_id], N'9' AS [index_id], N'1' AS [partition_number], N'72057777021059072' AS [hobt_id], N'0' AS [rows], N'0' AS [filestream_filegroup_id], N'0' AS [data_compression], N'NONE' AS [data_compression_desc] ) t;
SELECT [allocation_unit_id], [type], [type_desc], [container_id], [data_space_id], [total_pages], [used_pages], [data_pages], [partition_id], [object_id], [index_id], [partition_number], [hobt_id], [rows], [filestream_filegroup_id], [data_compression], [data_compression_desc]
FROM #tmp_GridResults_1
DROP TABLE #tmp_GridResults_1
GO
Run Code Online (Sandbox Code Playgroud)
X
select * from sys.allocation_units a --where data_space_id = 6
inner join sys.partitions b on a.container_id = b.hobt_id --type = 1
inner join sys.objects c on c.object_id = b.object_id
where data_space_id = 6
Run Code Online (Sandbox Code Playgroud)
--什么都不返回
所以看起来我在数据库中有一个对象,没有占用 400mb 的行,它在 sys.objects 中没有记录
我曾尝试向文件组添加一个小文件并对要删除的文件执行空文件操作,然后执行 dbcc 收缩空文件,但是我得到“页面无法移动,因为它在收缩期间被释放”该页面是指对象包含在分配单元中但不在 sys.objects 中
DBCC checkdb 在尝试打开或创建物理文件时失败,并显示“创建文件遇到操作系统错误 665(因文件系统限制无法完成)
关于如何进行的任何想法,我真的很想删除这些文件或至少将它们缩小到更小的尺寸
尝试对数据库运行 DBCC UPDATEUSAGE,因为 SQL 可能会报告有关数据库中使用的空间的错误数据。
如果这改变了任何空间使用元数据,那么您可以再次重试 EMPTYFILE,如果成功则删除文件。
归档时间: |
|
查看次数: |
177 次 |
最近记录: |