На моем ПК для разработки установлена полная версия SQL Server 2012.
Я пытаюсь следовать примерам здесь, которые показать, как создать новую временную таблицу, используя хранимую процедуру в качестве источника данных. Я пытаюсь объединить результаты нескольких хранимых процедур в одну временную таблицу (структура столбца/определение различных наборов результатов идентична).
Чтобы проверить, работает ли сантехника, я выдаю этот запрос:
SELECT * FROM OPENQUERY("FOO\SQL2012", 'exec mySchema.myStoredProc')
Но я получаю эту ошибку из этого простого запроса выбора проверки сантехники:
Сообщение 11526, уровень 16, состояние 1, процедура sp_describe_first_result_set, строка 1
Не удалось определить метаданные, поскольку инструкция 'insert #tmp(foo1, foo2, foo3) select 'O' as foo1, foo2, foo3' в процедуре myStoredProc используется временная таблица.
Если я правильно понимаю ошибку, OPENQUERY зависит от того, может ли сервер извлекать типы данных столбца из постоянного определения в базе данных, а временная таблица, созданная в моей хранимой процедуре, будучи эфемерной, не имеет постоянного определение. Если это так, есть ли какой-либо параметр, который указывает OPENQUERY сделать все возможное и попытаться сделать разумное предположение о типах данных столбца?
Вот фиктивный SP, с которым я тестирую:
create proc testproc
as
begin
create table #test
(id int, name varchar(5) );
insert into #test(id,name)values(1,'xxx');
select * from #test;
--drop table #test; -- tried dropping and not dropping, same error either way
end