Sql server 为什么临时表在完成其作用域后不删除?

Sql server 为什么临时表在完成其作用域后不删除?,sql-server,temp-tables,tempdb,Sql Server,Temp Tables,Tempdb,可能重复: 我们在存储过程中创建了临时表,在运行存储过程时,Temparory表在TempDB中创建 在我的SP中,我编写了在手动完成所有操作后删除临时表的代码 但是它仍然在TempDB中,并且没有被删除。但是当我重新启动SQL连接时,表被删除了。我不明白这种情况是如何在我的数据库中发生的 为什么我的临时表在完成其作用域后不被删除 有人能帮我解决这个问题吗?我不知道为什么您的表没有被删除,但是您能使用表变量(@TableName)而不是临时表(#TableName)吗?这样,您就不必担心删除它

可能重复:

我们在存储过程中创建了临时表,在运行存储过程时,Temparory表在TempDB中创建

在我的SP中,我编写了在手动完成所有操作后删除临时表的代码

但是它仍然在TempDB中,并且没有被删除。但是当我重新启动SQL连接时,表被删除了。我不明白这种情况是如何在我的数据库中发生的

为什么我的临时表在完成其作用域后不被删除


有人能帮我解决这个问题吗?

我不知道为什么您的表没有被删除,但是您能使用表变量(@TableName)而不是临时表(#TableName)吗?这样,您就不必担心删除它,一旦它超出范围,它就会被删除…

一周前您问了同样的问题:您是否在SQL Management Studio中执行此操作?如果是,那就是你的问题。SQL Management Studio在执行完SP后不会关闭连接。如果在手动删除临时表后尝试重新创建临时表,SQL是否会对已存在的表抛出错误?这可能只是服务器如何实现表删除的一个工件吗?IE:表是否确实已成功删除,但tempDB中的条目由于某种原因仍然保留?请向我们展示一些代码如果您能展示一些代码来演示问题,这将非常有用。此外,您是否收到错误或其他信息?您正在重复一个神话:表变量保存在tempdb中;另外,您还必须担心性能,因为表中并没有统计数据vars@Mitch-关于统计的观点是很好的,这就是为什么我问他是否能逃脱惩罚的原因-在少数几行上,这应该不是问题。我不认为我说的任何其他话都是不准确的,是吗?如果是的话,我很想知道我自己的发展!Fergus:“表变量保存在tempdb中”,对吧?但谁说不是呢?我当然没有。我说过,当它们超出范围时,它们会自动被删除,我相信它们是(例如,如本文所述)哦,别忘了事务的gotcha。。。。