mssql sqlserver tempdb无法删除文件的方法分享


摘要:
下文讲述我曾经使用sql脚本创建tempdb文件,占满整个磁盘的处理方法



为了从SQL Server中的数据库中删除文件,它必须是空的。对于我想删除的每个文件,我需要运行:

USE [tempdb];
GO
DBCC SHRINKFILE (testname, EMPTYFILE);
GO

————————————————–

当我每次运行此命令时,都会收到如下错误信息:
DBCC SHRINKFILE:页面4:130无法移动,因为它是工作表页面。
消息2555,级别16,状态1,行1
无法将文件“testname”的所有内容移动到其他位置以完成空文件操作。

当我们修改为“单用户”模式,然后进行上述操作,任然出现相关错误

DBCC DROPCLEANBUFFERS
GO
DBCC FREEPROCCACHE
GO
DBCC FREESESSIONCACHE
GO
DBCC FREESYSTEMCACHE ( 'ALL')
GO 

最后我们采用 最小配置启动sqlserver 启动参数为 -f
然后运行

 ALTER DATABASE [tempdb]  REMOVE FILE [testname]
  ----testname ---添加的tempdb文件
 ---重启sqlserver  tempdb文件得到完美解决