但是,SSIS(或sql Server)无法解析此查询的元数据,因此该程序包将不会运行.我已经在线找到了一些不同的解决方案,但是它们似乎都不适用于sql Server 2008和sql Server 2014.我们目前正在将所有服务器升级到2014,而这一特定的软件包运行于2008年DEV,2014年在质量检查和2008年在目前的生产.到秋天,PROD层将是2014年,DEV层将在此之后推出.不幸的是,我迫不及待地等到这些升级发生,才能发布这个SSIS包.数据需要在下周开始移动.因此,我需要找出一种方法来为两个环境解析元数据.这是我迄今为止所尝试过的
>在IF 1 = 0块中添加一个虚拟选择,返回正确的元数据.这在2008年工作,但不是2014年.
>在存储过程的开头使用SET FMTONLY OFF.这个工作在2008年,但不是2014年.此外,它导致存储过程对返回的每个列运行一次(在这种情况下超过30个),即使它是有效的,这是一个破产者.
>使用EXEC … WITH RESULT SETS((…));.这在2014年工作,但不是在2008年.
>部署存储过程,返回正确的元数据,构建和部署SSIS包,然后将存储过程修改为正确的版本.这在任何一个环境中似乎都不起作用,这将使我们在ETL框架内开发的任何其他ETL应用程序变得复杂.
如果我不明白什么,我可以将不同的存储过程和程序包部署到不同的层次中,但是我更愿意这样做.一方面,这将会使未来的版本变得复杂,我也需要确保在升级服务器之后,不要忘记更新存储过程和包.
我也可以在数据库中创建真正的表,这些表将取代这些临时表.我真的不喜欢这个解决方案,但这是我能忍受的.如果我最终这样做,我将来可能会切换到使用WITH RESULT SETS.
解决方法
原文地址:https://www.jb51.cc/mssql/81959.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。