gpt4 book ai didi

sql - OpenQuery 和使用动态 SQL

转载 作者:行者123 更新时间:2023-12-04 14:16:01 25 4
gpt4 key购买 nike

我们正在尝试迁移到 SQL Server 2014。有几种情况我们需要使用 OpenQuery 来返回动态结果。结果集会根据不同的输入参数而有所不同。它在 sql 2008R2 中工作,我需要让它继续工作但是有以下错误我无法解决。

The metadata could not be determined because statement 'EXEC (@sQry)' in procedure 'spTest' contains dynamic SQL. Consider using the WITH RESULT SETS clause to explicitly describe the result set.



我尝试过结果集未定义,但仍然存在相同的错误。
SELECT * INTO tblTest 
FROM OPENQUERY(LinkedServer, 'SET FMTONLY OFF EXEC spTest ''27'', null, null, null, ''%, Employed'' WITH RESULT SETS UNDEFINED')

是否有任何替代方案或解决此问题。
先感谢您。

最佳答案

有一个变通办法,但你不会喜欢它。您需要创建一个包装过程,它将定义元数据并根据提供给包装的列执行原始过程。这是一个指向 MSDN 博客的链接,他们讨论了为 sp_help_job 执行此操作;

http://blogs.msdn.com/b/sqlagent/archive/2012/07/12/workaround-sql-server-2012-openrowset-on-msdb-dbo-sp-help-job-throws-error.aspx

它在 2008 年工作,因为 SSIS 和它的同类会在程序中查找数据类型,2012 年不会那样播放,如果它想要元数据有任何歧义。包装器将帮助您跛行,但我建议使程序更符合现代编码标准。无论如何希望有帮助!

关于sql - OpenQuery 和使用动态 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30658912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com