我的开发 PC 上安装了 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' in procedure '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