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

Tool to convert queries with Non-ANSI syntax to ANSI syntax in SQL Sever 2008 R2

作为背景,我们的系统从 SQL 2000 开始工作,并使用 Non-ANSI 语法编写查询。当我们迁移到 SQL 2008 R2 时,我们已经用 RIGHTLEFT join 修改了 "= * " and " * ="。但现在我们正计划迁移到 SQL 2016。 Comma JOIN 已弃用。我们也可以在此版本中使用逗号连接,但 Microsoft 建议这样会影响查询的性能。我们也不知道 SQL 服务器将对这些 Non-ANSI 组件的支持延长多长时间。

现在我们正在寻找一个 工具(Microsoft 或第三方),它可以扫描存储过程并能够更改 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

如果遇到类似情况的任何人都可以阐明这一点,将会有所帮助。任何帮助将不胜感激。

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

我建议您通过确定当前环境中花费时间最长的查询来定位要修复的查询(如果它们确实很长,则可能会考虑一些性能调整-运行宁同时你在它)和那些查询 运行 最频繁。由于 2016 版本将允许您使用已弃用的语法,因此首先修复最关键的语法,您将避免最严重的潜在性能问题。我建议获得前 10 个最长的 运行ning 查询和前十个最常用的查询,修复它们,然后继续每个类别的下十个。

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