SQL已存在名为'#临时工';更新至SAP PL-16后的数据库中

SQL已存在名为'#临时工';更新至SAP PL-16后的数据库中,sql,sql-server,sql-server-2008,sap,Sql,Sql Server,Sql Server 2008,Sap,我正在使用SQL 2008 R2,今天我们使用SAP更新PL-16对其进行了更新。之后,我们在我以前开发的应用程序中遇到了问题 我们在临时表中遇到错误 错误: [SQL Server Native 10.0][SQL Server]已存在名为的对象 数据库中的“#TEMP”]FMS 我们尝试了一种解决方案,在每个查询的开头插入“drop table#temp” IF (SELECT object_id('TempDB..#Temp')) IS NOT NULL BEGIN DROP T

我正在使用SQL 2008 R2,今天我们使用SAP更新PL-16对其进行了更新。之后,我们在我以前开发的应用程序中遇到了问题

我们在临时表中遇到错误

错误:

[SQL Server Native 10.0][SQL Server]已存在名为的对象 数据库中的“#TEMP”]FMS

我们尝试了一种解决方案,在每个查询的开头插入“drop table#temp”

IF (SELECT object_id('TempDB..#Temp')) IS NOT NULL
BEGIN
    DROP TABLE #Temp
END
它仍然会提示相同的错误。有什么帮助吗

供参考的大查询:(

选择案例
当(转换(浮动,$[$38.11])>0时
和convert(float,$[$38.11],2)>=convert(float,t0.[U_FQuantity],2)
和转换(浮动,$[$38.11],2)0
和$[rdr1.U_mishkal]>=t0。[U_FWeight]
和[rdr1.U_mishkal]0美元
和$[rdr1.U_kmNsiaa]>=t0。[U Fkm]
和$[rdr1.U_kmNsiaa]0
和$[rdr1.U_Nefach]>=t0。[U_FVolume]
和$[rdr1.U_Nefach]0
和$[rdr1.U_点]>=t0。[U_点]
和$[rdr1.U_点]0
和$[rdr1.U_Hamtana]>=t0。[U_FHamtana]
和$[rdr1.U_Hamtana]0
和convert(float,$[$38.11],2)>=convert(float,t0.[U_FQuantity],2)
和转换(浮动,$[$38.11],2)0
和$[rdr1.U_mishkal]>=t0。[U_FWeight]
和[rdr1.U_mishkal]0美元
和$[rdr1.U_kmNsiaa]>=t0。[U Fkm]
和$[rdr1.U_kmNsiaa]0
和$[rdr1.U_Nefach]>=t0。[U_FVolume]
和$[rdr1.U_Nefach]0
和$[rdr1.U_点]>=t0。[U_点]
和$[rdr1.U_点]0
和$[rdr1.U_Hamtana]>=t0。[U_FHamtana]
和$[rdr1.U_Hamtana]0
和convert(float,$[$38.11],2)>=convert(float,t0.[U_FQuantity],2)
和转换(浮动,$[$38.11],2)0
和$[rdr1.U_mishkal]>=t0。[U_FWeight]
和[rdr1.U_mishkal]0美元
和$[rdr1.U_kmNsiaa]>=t0。[U Fkm]
和$[rdr1.U_kmNsiaa]0
和$[rdr1.U_Nefach]>=t0。[U_FVolume]
和$[rdr1.U_Nefach]0
和$[rdr1.U_点]>=t0。[U_点]
和$[rdr1.U_点]0
和$[rdr1.U_Hamtana]>=t0。[U_FHamtana]

和$[rdr1.U_Hamtana]这对我来说真的很奇怪。以一个#开头的临时表是会话的本地表。因此,每个会话都应该能够看到自己独立定义的#临时表,并在其中包含自己的数据。带有##前缀的临时表可以在会话之间共享。当最后一个使用它的会话关闭时,它们会自动删除ses,如果没有明确删除它

您正在创建临时表,删除它,并尝试在同一批中再次创建它吗?SQL解析器不喜欢这样。因此,例如,如果我将以下代码放入management studio,然后执行简单的语法检查,它会给我相同的错误,尽管它看起来应该是有效的

drop table #temp

select 1 x into #temp

select * from #temp

drop table #temp

select 2 x into #temp

select * from #temp
它不喜欢第二次尝试创建临时表

您可以尝试使用GO语句来确保创建和删除临时表的代码在自己的批处理中。SQL似乎对此没有问题:

GO
drop table #temp
select 1 x into #temp

select * from #temp

drop table #temp

GO

select 2 x into #temp

select * from #temp
GO

您正在删除##Temp而不是#Temp…在SQL Server中的一瞬间实验表明,它将这些对象视为不同的对象。@Mattstrower抱歉,刚才从引用链接复制并发布了:但我在运行时做了必要的更改。。但您的错误源不是您发布的代码。因此,在每次查询开始时,我们应该如何提供帮助?“这是什么意思?在每次运行查询之前都运行此语句?请给出一个示例,说明一个查询中出现此错误的地方。我假设存储过程中有多个语句,或者在other@MattThrower你现在能检查我的问题吗我已经发布了一个问题。。
GO
drop table #temp
select 1 x into #temp

select * from #temp

drop table #temp

GO

select 2 x into #temp

select * from #temp
GO