我们正在尝试迁移到SQL Server 2014.在某些情况下,我们需要使用OpenQuery来返回动态结果。根据不同的输入参数,结果集会有所不同。它在sql 2008R2中工作,我需要保持工作但是有以下错误,我无法解决。
无法确定元数据,因为声明'EXEC(@sQry)' 在过程'spTest'中包含动态SQL。考虑 使用WITH RESULT SETS子句显式描述结果 集。
我尝试使用结果集未定义,但仍然存在相同的错误。
SELECT * INTO tblTest
FROM OPENQUERY(LinkedServer, 'SET FMTONLY OFF EXEC spTest ''27'', null, null, null, ''%, Employed'' WITH RESULT SETS UNDEFINED')
有没有其他选择或解决这个问题 提前谢谢。
答案 0 :(得分:1)
有一种解决方法,但你不会喜欢它。您需要创建一个包装器过程,该过程将定义元数据并根据提供给包装器的列执行原始过程。这是一个MSDN博客的链接,他们讨论为sp_help_job做这个;
它在2008年起作用,因为SSIS及其类似的人会在查找数据类型的过程中查找,2012年没有这种方式,如果它有任何模糊性,它想要元数据。包装器可以帮助你跛行,但我建议使程序更符合现代编码标准。无论如何希望有所帮助!