【发布时间】:2012-11-20 01:51:12
【问题描述】:
我需要从生产数据库中删除一些旧文件,这些文件是分区表的一部分。因此,步骤如下 - 我删除了理论上通过分区函数保留在那里的数据(所有数据来自 2007 年)。
然后我合并当年的分区函数:
ALTER PARTITION FUNCTION pfPeriod() MERGE RANGE (2007);
然后,我想删除文件和文件组:
ALTER DATABASE mydatabase REMOVE FILE tbProperty2007
ALTER DATABASE mydatabase REMOVE FILEGROUP fgProperty2007
- 尽在书上。
我收到了错误:
无法删除文件“tbProperty2007”,因为它不为空。
无法删除文件组“fgProperty2007”,因为它不为空。
我之前(2005 年、2006 年)已经完成了这个过程,文件不会删除(对于另一个表)的原因是索引 - 它保存在其中一个文件中(我不小心在分区中创建了索引表)。在另一个文件组中重新创建索引后 - 我可以毫无问题地删除文件和文件组。
无论如何,这次我在另一个文件组中重新创建了索引,但仍然 - 我无法删除文件和文件组。
那么,谁能告诉我如何查看 *.ndf 文件的内容,或者为什么文件不会删除?请)
附:可能是 sql server 2012 的 bug - 我可以删除 sql server 2005 上的文件,但我不能在 2012 上删除。
【问题讨论】:
-
我放弃了,用 EMPTYFILE 选项做了收缩文件,它帮助了 'DBCC SHRINKFILE('tbProperty2007', EMPTYFILE)' 然后我就可以删除文件了。
标签: sql-server tsql sql-server-2012