Sql server 临时表在sql server中似乎扩展其作用域的原因

Sql server 临时表在sql server中似乎扩展其作用域的原因,sql-server,sql-server-2012,temp-tables,Sql Server,Sql Server 2012,Temp Tables,我面临一种奇怪的情况 我使用select into技术创建的临时表,如 select * into #MyTempTable from TABLE 原则上,pf#mytentable的范围仅限于进程id 但即使我明确使用 drop table #MyTempTable 当我再次跑步时 select * into #MyTempTable from TABLE 我有一个错误,临时表已经存在 为什么会发生这种情况?我以前从未遇到过这个问题,多年来我一直使用这种技术。您确定要在同一窗口中运行代码

我面临一种奇怪的情况

我使用select into技术创建的临时表,如

select *
into #MyTempTable
from TABLE
原则上,pf
#mytentable
的范围仅限于进程id

但即使我明确使用

drop table #MyTempTable
当我再次跑步时

select *
into #MyTempTable
from TABLE
我有一个错误,临时表已经存在


为什么会发生这种情况?我以前从未遇到过这个问题,多年来我一直使用这种技术。

您确定要在同一窗口中运行代码吗?如果你把桌子放在另一个窗口,它不会正确地放下来

我总是认为最好的做法是在显式创建表之前运行代码来检查它是否存在(而不是<代码>选择为< /COD>)。像这样的东西

IF OBJECT_ID('tempdb..#TempTable') IS NOT NULL DROP TABLE #TempTable
CREATE TABLE #TempTable (RowNumber int identity(1,1), OtherField nvarchar(max))

你肯定是在同一个窗口中运行代码吗?如果你把桌子放在另一个窗口,它不会正确地放下来

我总是认为最好的做法是在显式创建表之前运行代码来检查它是否存在(而不是<代码>选择为< /COD>)。像这样的东西

IF OBJECT_ID('tempdb..#TempTable') IS NOT NULL DROP TABLE #TempTable
CREATE TABLE #TempTable (RowNumber int identity(1,1), OtherField nvarchar(max))

是的,这很好。事实上,我尝试了你的方法,我的问题消失了。
select-into
技术只是一种节省时间的方法。是的,这可能会有点痛苦(它让你来到stack-overflow询问它)。从长远来看,养成上面代码的习惯实际上可以节省更多的时间。是的,这非常好。事实上,我尝试了你的方法,我的问题消失了。
select-into
技术只是一种节省时间的方法。是的,这可能会有点痛苦(它让你来到stack-overflow询问它)。从长远来看,养成上面代码的习惯实际上可以节省更多的时间。