Запуск 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 исключено агрегированием".