我已经能够创建从Excel到SQL Server的数据连接并成功执行许多SQL查询.但如果它包含一个临时表,我无法使任何TSQL工作.例如:
select * into #t from compass3.dbo.freq select * from #t where freq_id>2
(显然在这种情况下不需要使用#t:我只是给出了最简单的例子.)这在SSMS中工作正常但是当通过Excel执行时我收到错误消息"我们无法刷新连接"audbbicube '.表'离子Query1'可能不存在."
在其他一些SO帖子中,人们建议添加set nocount on
,但这种情况没有区别.
以下似乎有效......
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
并使用表变量而不是临时表,我就能实现我所需要的.
我想添加上面的答案 - 只需SET NOCOUNT ON
在查询的顶部使用,常规临时表SELECT name INTO #Names FROM Employee
应该工作.
这里不需要表变量.
您还可以添加SET ANSI_WARNINGS OFF
以避免诸如"聚合消除NULL值"之类的消息.