Lei*_*ila 5 sql sql-server sql-server-2014
我们正在尝试迁移到 SQL Server 2014。有几种情况我们需要使用 OpenQuery 来返回动态结果。根据输入参数的不同,结果集也会不同。它在 sql 2008R2 中工作,我需要保持它工作,但出现以下错误,我无法解决。
无法确定元数据,因为过程“spTest”中的语句“EXEC (@sQry)”包含动态 SQL。考虑使用WITH RESULT SETS 子句来显式描述结果集。
我已经尝试过结果集未定义,但仍然存在相同的错误。
SELECT * INTO tblTest
FROM OPENQUERY(LinkedServer, 'SET FMTONLY OFF EXEC spTest ''27'', null, null, null, ''%, Employed'' WITH RESULT SETS UNDEFINED')
Run Code Online (Sandbox Code Playgroud)
是否有任何替代方案或解决此问题。
先感谢您。
有一个解决办法,但你不会喜欢它。您需要创建一个包装器过程,它将定义元数据并根据提供给包装器的列执行原始过程。这是一个 MSDN 博客的链接,他们在其中讨论了如何为 sp_help_job 执行此操作;
它在 2008 年起作用,因为 SSIS 及其同类会在过程中查找数据类型,但 2012 年则不会这样,如果它需要元数据有任何歧义的话。包装器将帮助您跛行,但我建议使该过程更符合现代编码标准。无论如何希望有帮助!