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