【发布时间】:2013-02-04 14:43:44
【问题描述】:
在 SQL Server 2008 中,我尝试批量插入大小约为 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)这是数据库描述表信息(没有异国情调,也没有触发器):https://gist.github.com/mlissner/4cd13db5a1bbae91dd50
3)我已将数据库设置为简单恢复模式。
【问题讨论】:
-
显示您的表结构(包括索引)、CSV 文件的一般格式(几行即可)以及文件中的行数。如果您尝试批量插入的表是否有触发器,请告诉我们您是否具有 CDC 和更改跟踪、复制等特殊功能。
-
在离线时删除肯定不会有太大作用,因为它会在启动时重置?
-
@chrisb 你试过这个吗?您会建议在生产实例上尝试吗?你愿意自愿为这个测试提供你的生产实例吗?
-
@aaron - 绝对不会,如果没有先进行 N 级测试,我会因为接近生产而被枪杀;)
-
注意,这是一个非生产服务器......现在我不确定要遵循什么建议。
标签: sql-server shrink tempdb