这真是一个双重问题。
一,我在使用全局临时表时会遇到SQL服务器消耗大量tempDB log 文件空间的现象,而使用本地临时表会消耗数据文件空间?
这是正常的吗?在使用全局临时表与本地临时表时,我无法在Web上找到以这种方式使用日志文件空间的任何地方。
二,如果这是预期的行为,有没有办法告诉它不要这样做:)。我有足够的数据空间(6 GB),但我的日志空间有限(750 MB,增长有限)。像往常一样,tempDB是使用Simple Recovery设置的,因此运行到日志文件空间限制之前从未出现过问题...但是我从未使用全局临时表,就像我之前使用它们一样。
谢谢!乔尔
答案 0 :(得分:1)
当创建任何形式的临时表(本地或全局)时,表将在物理上创建并存储在tempdb数据库中。因此,这些表上的任何事务活动都记录在tempdb事务日志文件中。
每个说法没有设置,但是您可以实现物理表而不是临时表,以便将数据存储在用户数据库中,从而使用该数据库的关联数据和事务日志文件。
如果您真的想陷入并了解tempdb数据库,请查看以下资源。
答案 1 :(得分:0)
其中一个全局临时表的生命周期是多少?它们是否在合理的时间内掉线?当用户断开连接时,“常规”临时表会被删除,如果不是在此之前手动断开,则当创建会话结束时,如果内存服务,则“全局”(##)临时表将被删除。如果全局临时表持续很长时间,我可以看到日志增长,因为管理临时表活动的日志记录仍然可以标记为活动日志记录,并且不会被日志备份释放(完全恢复)或检查站(简单)
答案 2 :(得分:0)
如上所述,会话的长度会产生影响。
此外,临时表在事务中工作,表变量在事务上下文之外工作。因此,临时将在日志文件中记录与使用表的更新相关的条目。