SQL Server中的临时表

SQL Server中的临时表,sql,sql-server,Sql,Sql Server,我正在运行一个大查询,它创建了很多临时表。对于每一个,我将 if object_id('tempdb..##TempTable1') is not null drop table ##TempTable1; 在开始之前,我将变量选择到临时表中。但有时我还是会收到一条错误消息,说诱惑1已经存在。这似乎是随机的;其他一些临时表也会出现这种情况。为什么会出现这个问题?是否有更好的方法避免此问题?这些是全局临时表。这意味着它们可用于任何连接。如果这是在存储过程中,我建议改为使用临时表。将声明更改为使用

我正在运行一个大查询,它创建了很多临时表。对于每一个,我将

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

在开始之前,我将变量选择到临时表中。但有时我还是会收到一条错误消息,说诱惑1已经存在。这似乎是随机的;其他一些临时表也会出现这种情况。为什么会出现这个问题?是否有更好的方法避免此问题?

这些是全局临时表。这意味着它们可用于任何连接。如果这是在存储过程中,我建议改为使用临时表。将声明更改为使用单个而不是。如果你不能100%确定你在用全局临时表做什么,那么全局临时表是非常危险的。你真的需要一个全局临时表而不是本地临时表吗?为什么你需要很多临时表?肖恩说得对。间歇性问题可能是由于使用该全局临时表的另一个连接造成的。事实上,您可能正在使用此代码将全局临时表删除给其他人。除非您需要在连接之间共享临时表,否则不太可能使用诱惑1而不是诱惑1。谢谢大家的评论。我想,查询创建这么多临时表的原因是每次只执行一小步,这样就不会占用服务器上的太多资源并影响其他用户。临时表很大,必须存储在服务器的临时存储器中。我不确定将表从全局更改为本地是否会将其移动到本地存储或只是更改访问权限。