在SQL Sever 2008 R2中将使用非ANSI语法的查询转换为ANSI语法的工具

时间:2017-08-09 15:38:42

标签: sql tsql sql-server-2008-r2 sql-server-2016

作为后台,我们的系统正在SQL 2000工作,并使用Non-ANSI语法编写查询。当我们迁移到SQL 2008 R2时,我们已使用"= * " and " * ="以及RIGHT修改了LEFT join。但现在我们计划迁移到SQL 2016。逗号JOIN已弃用。我们也可以在此版本中使用逗号联接,但Microsoft建议这样会影响查询的性能。此外,我们不知道SQL Server将在这些Non-ANSI组件上扩展支持多长时间。

现在我们正在寻找可以扫描存储过程的工具(Microsoft或Thirdparty),并且可以更改Non-ANSI语法,如','和将其替换为INNER JOINJOIN

到目前为止,我已尝试过

  

Toad for Oracle   https://www.toadworld.com/products/toad-for-oracle/f/10/t/9518

并注意到它没有给出正确的输出。

还使用了其他几种工具,两者都没有达到目的。

  

http://www.dpriver.com/blog/list-of-demos-illustrate-how-to-use-general-sql-parser/rewrite-oracle-propriety-joins-to-ansi-sql-compliant-joins/

     

http://info.swissql.com/products/sqlone-apijava/sqlone-apijava.html

如果遇到类似情况的任何人都能对此有所了解,那将会很有帮助。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

坦率地说,我不认为我会相信任何工具能够做到这一点,除了一次加入。您需要运行旧代码和新代码,并确保获得相同的结果。

我建议您通过识别在当前环境中占用时间最长的查询来定位要修复的查询(并且如果它们真的长时间运行时可能会查看一些性能调整)查询运行最频繁。由于2016版本允许您使用已弃用的语法,通过先修复最关键的语法,您将避免最糟糕的潜在性能问题。我建议获得前10个最常用的查询和前10个最常用的查询,修复这些查询,然后转到每个类别的下一个十个。

最关键的是训练你的开发者不再使用这种语法。此外,您可以让他们修复他们需要触摸维护或错误的任何查询,并通过100%代码审查强制执行。