【发布时间】:2016-03-01 23:02:56
【问题描述】:
我有一份报告,它将触发 SQL Server 上的存储过程。运行报告需要几分钟时间。目前,在开发环境中,我正在使用这种类型的代码写入几个临时表:
SELECT *
INTO #Temp1
FROM MyTable
WHERE MyVal = 'X'
SELECT *
INTO #Temp2
FROM MyOtherTable
WHERE MyOtherVal = 'Y'
ETC...
在开发环境中运行良好,但有轻微的可能性,有一天两个人可能会使用两个不同的参数同时启动它。如果他们这样做,会导致#Temp 被覆盖吗?如果是这样,处理它的最佳方法是什么?你能根据时间戳或其他东西创建一个#Temp 文件名吗?
【问题讨论】:
-
不,以您显示的方式创建的临时表是特定于会话的。多个用户不会互相干扰。
-
如果临时表以 # 开头,则它特定于该用户。如果你在一开始就给它一个##,那么它对所有用户都是全局的。
-
谢谢,伙计们!这些是自学成才的陷阱,但我一直在学习!
-
我担心如果您使用连接池,可能会导致一些问题,但似乎已经考虑过:stackoverflow.com/questions/141718/…
标签: sql-server