通过MS Access的SQL Server临时表

时间:2013-09-04 08:45:32

标签: tsql ms-access scope temp-tables pass-through

我多年来一直在标准T-SQL编码中使用#temp表,并认为我理解它们。 但是,我被拖入了一个基于MS Access的项目,利用传递查询,并发现一些让我感到困惑的事情。 虽然也许这是我的愚弄的内部运作方式!?

我们开始:在正常使用情况下,我理解如果我在Sproc中创建临时表,它的范围以SProc的结尾结束,并且默认情况下被删除。

在Access示例中,我发现可以在一个Query中执行此操作:

  

从dbo.myTable

中选择top(10)*到#myTemp

然后在第二个单独的查询中:

  

从#myTemp

中选择*

这怎么可能? 如果临时表因当前会话而死,这是否意味着Access保持单个会话打开,并将该会话用于所有执行的查询?

或者我对范围的基本理解一直都是错误的吗?

希望有人可以帮助澄清引擎盖下发生的事情!

非常感谢

1 个答案:

答案 0 :(得分:1)

我找到了一个类似问题的this答案:

  

临时表存储在tempdb中,直到连接被删除(或者在使用它的最后一个连接被删除时的全局临时表的情况下)。你也可以(并且这是一个很好的方法)当你使用drop table语句完成它后,手动删除表。

我希望这会有所帮助。