gpt4 book ai didi

SQL Server 2005 和临时表范围

转载 作者:行者123 更新时间:2023-12-01 18:06:24 26 4
gpt4 key购买 nike

我已经阅读了临时表和范围的主题,我看到的所有答案似乎都没有谈到我的担忧之一。

据我了解,本地临时表的作用域仅在存储过程或子存储过程的生命周期内有效。然而并发方面的情况如何。即,如果我有一个存储过程创建一个临时表,该临时表是从两个不同的进程但从同一用户/连接字符串调用的,那么该临时表是否会在对该存储过程的两次调用之间共享,或者是否会出现以下情况:对存储过程的每次调用都会创建一个唯一的临时表实例。

我假设临时表属于存储过程调用的范围,但我想在我继续这样做之前确定一下。

最佳答案

本地临时表(以#开头)仅限于您的 session ;其他 session ,即使来自相同的用户/连接字符串,也看不到它们。生命周期的规则取决于本地临时表是否是在存储过程中创建的:

  • 在存储过程中创建的本地临时表在存储过程结束时将被删除;其他存储过程或调用进程看不到它们。
  • session 结束时,其他本地临时表将被删除。

全局临时表(以##开头)在 session 之间共享。它们会在以下情况下被丢弃:

  • 创建它们的 session 结束
  • 并且没有其他 session 引用它们

此命令可以方便地查看存在哪些临时表:

select TABLE_NAME from tempdb.information_schema.tables 

如果您不确定临时表是否存在,可以很方便地删除它们:

if object_id('tempdb..#SoTest') is not null drop table #SoTest

查看此MSDN article了解更多信息。

关于SQL Server 2005 和临时表范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/892351/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com