手动删除tempdb.mdf文件是否安全?

时间:2013-02-19 19:19:00

标签: sql-server shrink tempdb

在SQL Server 2008中,我试图BULK INSERT一个大小约为1GB的CSV。正如我所做的那样,它正在创建一个巨大的tempdb.mdf文件。现在,这个1GB CSV文件的容量为35GB。

我尝试了Microsoft provides的各种解决方案,但它们似乎没有用。

我认为在非生产系统上“缩小”tempdb.mdf文件的最简单方法是在SQL服务关闭时删除它。

这会导致任何问题吗?如果是这样,可以预期会出现什么样的问题?

编辑

1)这是CSV中的一行(它有大约4M行):

PS D:\> gc .\map.items.csv | select -last 1
40747646;jdbc:patent/8046822;8683;other/patent;12/31/69 16:00:00.00 PST;E6 E6 80 6D FD 6D 0B 5F 44 66 4E 1C 35 DE 46 BB 19 36 3C 31 37 67 4D 1D DF 58 A5 99 A8 A0 3B 52;crawled;full_patent_db2;Electronic apparatus, function selection method of electronic apparatus and management system of electronic apparatus;Sony Corporation;Tokyo;03;G06F21/00

2)这是DB描述表信息(没有异国情调,也没有触发器):https://gist.github.com/mlissner/4cd13db5a1bbae91dd50

3)我已将数据库设置为简单恢复模型。

3 个答案:

答案 0 :(得分:4)

不,您无法删除tempdb mdf文件。

如果需要再次收缩文件,请重新启动SQL Server,然后运行DBCC SHRINKFILE()。这是一个受支持的操作,不像任何“删除一个mdf文件,而SQL Server不看”伏都教。

您可能能够优化批量操作,因此tempdb在第一时间并没有受到太大影响,但是根据实际问题的具体情况,我们无法确定细节。

答案 1 :(得分:1)

最后,是的,删除此文件对我来说是安全的。 SHRINKFILE没有始终如一地工作(不知道为什么,可能是基本的东西),删除文件工作得很好。

有点巫术动作,是的,但文件是自动重新创建的,没有出现任何问题。

答案 2 :(得分:0)

你能用BCP吗?这是将大型平面文件加载到SQL Server的推荐方法。

或者,您可以从完整恢复模型切换到简单恢复模型吗?这将减少服务器执行的事务日志记录量。