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

问题描述:

在SQL Server 2008中,我试图批量插入大小约为1GB的CSV。正如我这样做,它创建了一个巨大的tempdb.mdf文件。目前,这个1GB CSV文件的容量为35GB。手动删除tempdb.mdf文件是否安全?

我试过了各种解决方案,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)我有数据库设置为简单恢复模式。

+1

显示您的表格结构(包括索引),CSV文件的一般格式(几行很好)以及文件中的行数。如果您尝试批量插入的表具有触发器,如果​​您拥有CDC和更改跟踪,复制等外来功能,请告诉我们。 – 2013-02-19 19:20:59

+1

离线时切记删除时不会做大量工作,因为它在启动时会重置? – chrisb 2013-02-19 19:31:55

+0

@chrisb你试过这个吗?你会建议在生产实例上尝试吗?您是否愿意为此测试自愿为您的生产实例? – 2013-02-19 19:41:12

最后,是的,我删除这个文件是安全的。 SHRINKFILE没有一贯的工作(不知道为什么,可能是基本的东西),并删除文件完美的工作。

一种伏都教的举动,是的,但文件被自动重新创建,没有发生任何问题。

不,您不能删除tempdb mdf文件。

如果需要再次缩小文件,请重新启动SQL Server,然后运行DBCC SHRINKFILE()。这是一个受支持的操作,不像任何这种“在SQL Server不查找时删除mdf文件”的voodoo。

您可能能够优化您的批量操作,因此tempdb在firts的地方并没有受到如此严重的打击,但不可能告诉详细的给出实际问题。

+0

谢谢。请参阅上面的编辑。 – mlissner 2013-02-19 20:09:56

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

或者,您是否可以从完全恢复模式切换到简单恢复模式?这将减少服务器执行的事务记录数量。

+0

MSDN实际[说相反](http://msdn.microsoft.com/en-us/library/ms190421(v = sql.105)。aspx):“在可能的情况下,使用Transact-SQL语句将数据批量导入到SQL Server中,因为Transact-SQL比bcp快。” – Pondlife 2013-02-19 19:29:20

+0

够公平的。我总是将BCP理解为推荐的方法。关于主题:有一篇MSDN文章[链接](http://msdn.microsoft.com/en-us/library/ms190422(v = sql.105).aspx)http://msdn.microsoft.com/zh-cn/ -us/library/ms190422(v = sql.105).aspx似乎相关。 – 2013-02-19 19:42:19