【问题标题】:Implement seamless Compute function on SQL Server 2012在 SQL Server 2012 上实现无缝计算功能
【发布时间】:2015-07-08 20:31:48
【问题描述】:

信息:我们正在测试从 SQL Server 2005 升级到 SQL Server 2012 的阶段。在阅读有关将不再受支持的功能的文档时,COMPUTE (Transact-SQL) 离开对我们来说将是一个问题。

问题:有什么方法可以写出我们自己的程序来代替 SQL Server 2012 上的内建计算,这将使它无缝,所以当调用 Compute 时,它​​会像 SQL 一样运行服务器2005?另一种方法是,我们是否需要使用替代代码更新所有 SQL 文件、UDF、触发器和存储过程?

注意我之前从未尝试过重新创建内置函数,因此有关此的任何信息都将对我和其他任何尝试这样做的人都非常有帮助。也知道它是否可以完成是一个加号。

Clenup: 与往常一样,如果这是重复的帖子,请指出下面的链接,我将删除我的帖子。

【问题讨论】:

  • COMPUTE BY 不是函数。我看不出它的效果(生成额外的结果集)是如何轻松复制的。我很好奇:你为什么使用 COMPUTE BY?这似乎是一个可怕的 API。
  • 你是对的,它是 2005 年原生语法的一部分。但是如果可能的话,它需要以另一种方式实现,因此使用单词 function。我个人认为正确的解决方案是升级到 2008 R2,这将给我们几年的时间来纠正它使用的所有位置,然后升级到 2012。计算用于遗留代码(调用 SQL 文件的 COBOL 和批处理进程)我当我发现它被使用时,已经用更高效的代码替换了它。只有 20 多年的代码需要审查,我担心实时升级会破坏很多事情。
  • 我已经建议先迁移到 SQL Server 2008,这将给我们 4 年左右的时间来更新所有代码,然后我们可以迁移到 SQL Server 2012。我会清理这个问题下周,因为它不再适用于我们的问题。在我所做的研究中,似乎无法扩展现有语法以重新添加此功能。

标签: function sql-server-2005 sql-server-2012


【解决方案1】:

COMPUTE BY 不是函数。我看不出它的效果(生成额外的结果集)是如何被轻松复制的。

用临时表替换 COMPUTE BY 和一些循环应该是直截了当的,但这将是一项费力的任务。最好更改应用程序,使其不依赖于多个结果集。

我建议先迁移到 SQL Server 2008,这将给我们 4 年左右的时间来更新所有代码,然后我们可以迁移到 SQL Server 2012。

这听起来很合理。到那时,至少会有 SQL Server 2016,所以你必须看看那时删除了哪些其他功能:)

【讨论】:

  • 享受胜利,感谢您抽出时间与我一起思考!
猜你喜欢
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多