SQL Server 临时表通过 MS Access 进行



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

我们来了:在正常使用下,我了解如果我在 Sproc 中创建一个临时表,它的作用域以 SProc 的结尾结束,默认情况下被删除。

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

选择顶部(10) * 从 dbo.myTable 进入 #myTemp

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

从 #myTemp 中选择 *

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

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

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

非常感谢

我发现了一个类似问题的答案:

临时表

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

我希望这有所帮助。

最新更新