5

在 SQL Server 2008 中,我试图批量插入大小约为 1GB 的 CSV。当我这样做时,它正在创建一个巨大的 tempdb.mdf 文件。现在,这个 1GB 的 CSV 文件是 35GB。

我已经尝试过微软提供的各种解决方案,但它们似乎都不起作用。

我认为在非生产系统上“缩小” 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)这是数据库描述表信息(没有异国情调,也没有触发器):https ://gist.github.com/mlissner/4cd13db5a1bbae91dd50

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

4

3 回答 3

4

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

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

您也许可以优化批量操作,因此 tempdb 一开始就不会受到如此严重的打击,但是鉴于实际问题是什么,无法通过详细信息来判断。

于 2013-02-19T19:21:32.170 回答
1

最后,是的,删除这个文件对我来说是安全的。SHRINKFILE 无法始终如一地工作(不知道为什么,可能是一些基本的东西),并且删除文件效果很好。

是的,有点像巫术,但是文件是自动重新创建的,没有发生任何问题。

于 2013-02-26T07:04:00.700 回答
0

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

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

于 2013-02-19T19:26:04.747 回答