从Excel运行的SQL不能使用临时表

我已经能够创build从Excel到SQL Server的数据连接,并成功地执行了许多SQL查询。 但是如果包含一个临时表,我不能得到任何TSQL的工作。 例如:

select * into #t from compass3.dbo.freq select * from #t where freq_id>2 

(在这种情况下显然没有必要使用#t:我只是给出了最简单的例子。)在SSMS中这个工作正常,但是当通过Excel执行时,我得到错误消息“我们无法刷新连接”audbbicube '表'离子查询1'可能不存在。“

在其他一些SOpost中,人们build议增加set nocount on ,但在这种情况下没有什么区别。

我想添加到上面的答案 – 只是在查询顶部使用SET NOCOUNT ON ,与常规临时表SELECT name INTO #Names FROM Employee应该工作。

这里不需要表variables。

您也可以添加SET ANSI_WARNINGS OFF以避免像“NULL值被聚合消除”的消息。

以下似乎工作…

 set nocount on declare @t table(fid int) -- I'm sure I could add the rest of the columns if I wanted to insert @t select freq_id from compass3.dbo.freq select * from @t where fid>2 

所以只要我打开nocount并使用一个表variables而不是一个临时表,我可以实现我所需要的。

我可以确认SET NOCOUNT ON解决了EXCEL SQL Query中 #temp表的问题。

这不工作:

 select 'a' a, 'b' b into #temp select * from #temp drop table #temp 

但是,这完美的作品:

 SET NOCOUNT ON select 'a' a, 'b' b into #temp select * from #temp drop table #temp