Использование временных таблиц в SSIS - PullRequest
1 голос
/ 18 сентября 2009

Я создал диспетчер соединений ADO.NET и источник DataReader со следующей командой SQL:

select 
   'test' as testcol
INTO
   #tmp

select * from #tmp

Если я нажимаю кнопку обновления в компоненте DataReader, я получаю SqlException «Неверное имя объекта #tmp». Сама SQL-статистика явно действительна и правильно выполняется в SQL Server Management Studio. Я также попытался установить DelayValidation в диспетчере соединений, но безрезультатно.

Ответы [ 3 ]

2 голосов
/ 18 сентября 2009

это ошибка на ВСТАВКЕ или ВЫБОР?

если вы вводите только одну команду, которая содержит INSERT и SELECT, попробуйте поставить точку с запятой перед SELECT.

РЕДАКТИРОВАТЬ после ОП комментария
инкапсулировать всю логику в хранимой процедуре:

CREATE PROCEDURE YourProcedureName
AS
select 
   'test' as testcol
INTO
   #tmp

select * from #tmp

GO

чтобы ваше приложение выполняло эту единственную команду SQL:

exec YourProcedureName

РЕДАКТИРОВАТЬ после следующего комментария OP

OP не сообщает, какую версию SQL Server они используют, если 2005 или выше, попробуйте CTE:

;with CTEtemp as
(
select 
   'test' as testcol
)
select * from CTEtemp
0 голосов
/ 27 января 2016

Использование sp_executesql

Ваша команда станет

exec sp_executesql @statement=N'
select 
   ''test'' as testcol
INTO
   #tmp

select * from #tmp'

Вы должны использовать строку nvarchar (отсюда и N) и экранировать одинарные кавычки, удваивая их.

У меня была такая же проблема, как и у вас, и вот как я ее только что исправил.

0 голосов
/ 18 сентября 2009

Почему это нельзя заменить на «ВЫБЕРИТЕ« тест »как testcol»? С парсером запросов SSIS могут возникнуть проблемы, потому что там задействована временная таблица, и он ожидает один оператор, а не реальный сценарий SQL. Или, если то, что вы делитесь выше, является лишь примером для иллюстрации, может быть что-то вроде этого:

SELECT *
  FROM (SELECT 'test' AS testcol)

Можете ли вы уточнить, что вы пытаетесь сделать здесь, и, если это так, зачем нужна временная таблица?

...