【问题标题】:Is it safe to delete the tempdb.mdf file manually?手动删除 tempdb.mdf 文件是否安全?
【发布时间】: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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-10
      • 2019-10-09
      • 2014-01-25
      • 2021-01-13
      • 2021-02-13
      • 2022-10-25
      • 2023-02-02
      • 1970-01-01
      相关资源
      最近更新 更多