多用户环境中的临时表使用情况

时间:2011-01-18 15:22:19

标签: sql sql-server tsql reporting-services

这是情况:

我有一份使用SP作为数据集的SSRS报告。 SP创建一个临时表,将一堆数据插入其中,然后选择将其返回以供SSRS报告。很直接。

问题:

如果多个用户运行的报表选择了不同的参数,SP创建的临时表是否会在tempdb中冲突,并且可能不会返回预期的数据集?

2 个答案:

答案 0 :(得分:19)

很可能不是。如果临时表定义为#temp@temp,那么您就是安全的,因为这些临时表只能由创建连接访问,并且只会在执行期间持续存储过程。但是,如果您正在使用##temp表(两个“磅”符号),而这些表也只在创建存储过程运行时持续,那么它们将被所有与该SQL的连接公开并可访问实例

你没有使用##表,这很好,所以你可能很安全。

答案 1 :(得分:3)

具有单个#的临时表是本地临时表,其范围仅限于创建它的会话,因此冲突不应成为问题。