Запуск SQL из Excel не может использовать временную таблицу

Мне удалось создать соединение для передачи данных из 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, но это не имело никакого значения в этом случае.

Ответы

Ответ 1

Появится следующее...

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 и использую переменную таблицы вместо временной таблицы, я могу добиться того, что мне нужно.

Ответ 2

Я хотел добавить к вышеуказанному ответу - просто используя SET NOCOUNT ON в верхней части запроса, с нормальной рабочей таблицей SELECT name INTO #Names FROM Employee должна работать.

Здесь не нужна табличная переменная.

Вы также можете добавить SET ANSI_WARNINGS OFF, чтобы избежать сообщений, таких как "Значение NULL исключено агрегированием".