首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除Tempdb .ndfs

删除Tempdb .ndfs
EN

Database Administration用户
提问于 2016-01-08 15:40:14
回答 2查看 2.8K关注 0票数 2

Tempdb配置有8个文件,我们正在将它们减少到4个。我阅读了许多博客,其中Server将允许您删除多余的..ndf,如果您运行4 dbcc drop和file语句,然后运行dbcc shrinkfile和emptyfile子句,然后运行alter命令和remove file子句。当尝试此操作时,错误

:第9页:364016无法移动,因为它是工作表页。Msg 2555、级别16、状态1、第19行不能将文件"tempdev8“的所有内容移到其他地方以完成空文件操作。DBCC执行完成。如果DBCC打印错误消息,请与系统管理员联系。

我的问题是:

我应该尝试通过标识锁定的临时表来删除它们,然后,重新运行dbcc语句,还是简单地运行ALTER语句,然后重新启动实例,或者重新启动实例,然后重新运行alter?我意识到temp表被tempdb一致使用的问题,这导致删除文件无法工作。

EN

回答 2

Database Administration用户

发布于 2016-01-08 16:06:45

根据微软社交网站上的迈克·罗斯的回答,我认为这应该是可行的:

代码语言:javascript
复制
DBCC FREESYSTEMCACHE ('ALL');

DBCC FREEPROCCACHE;

这将影响性能,因为Server将重新创建查询计划,但它应该允许您收缩TEMPDB

票数 2
EN

Database Administration用户

发布于 2021-03-02 11:16:45

我首先运行以下命令,看看是否可以删除该文件,而不必重新启动sql服务。

代码语言:javascript
复制
USE [tempdb]
GO
DBCC DROPCLEANBUFFERS
GO
DBCC FREEPROCCACHE
GO
DBCC FREESESSIONCACHE
GO
DBCC FREESYSTEMCACHE ( 'ALL')
GO
DBCC SHRINKFILE (N'temp5' , EMPTYFILE)
GO
ALTER DATABASE [tempdb] REMOVE FILE [temp5]
GO

如果文件被阻止,那么我将更改大小和文件增长。然后,如果可以重新启动sql服务,则等待下一个服务窗口。然后文件是小的,空的,并锁定增长。这样你就可以很容易地删除它们。

代码语言:javascript
复制
--before the sql server restart
USE [master]
ALTER DATABASE TempDB MODIFY FILE
(NAME = temp5, SIZE = 1KB, FILEGROWTH = 0 )
GO

--then after the sql server restart
USE [TempDB]
DBCC SHRINKFILE (N'temp5' , EMPTYFILE)
GO
ALTER DATABASE [tempdb] REMOVE FILE [temp5]
GO
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/125644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档