我们的数据库位于SQL Server 2000上。我们正在迁移到SQL Server 2008 R2。
我们希望将兼容级别更新为100。
但该兼容级别不再支持加入运算符*=
和=*
。
建议的解决方案是更新我们的源代码并将运算符更改为OUTER JOIN
。
但是我们无法承受千万次exe和dll的修改。所以我们无法更新我们的源代码;项目太多了。
我的问题是:
SQL Server 2008 R2中是否有任何系统允许我:
*=
替换为LEFT OUTER JOIN
)即使我们的程序仍使用旧语法
,此方法也允许我们将兼容级别设置为100由于
(P.S。此问题已在dba.stackexchange)
上交叉发布答案 0 :(得分:1)
没有。这将需要两件不存在的东西:
类似于INSTEAD OF SELECT触发器的东西
和
1000个可计费小时(或更多,取决于您和/或您的团队在质量保证方面的表现如何)来提出捕获所有允许的语法变体所需的文本解析/正则表达式/等查询:在值中间阻止注释,在末尾阻止内联注释,将条件分成多行,表别名,内连接表的外连接等等。
您实际上会花费更少时间来更新您的源代码(正如其他人所建议的那样),甚至跨越“千位exe和dll”,而不是尝试实现这一点,然后花费其余的时间生活调试它,并采取支持调用问题最终导致由此中的错误引起。
(P.S。这个答案已在DBA.StackExchange上交叉发布,但有更多细节)
<强>更新强>
我为此功能提交了Microsoft Connect建议:Intercept query batch from client to rewrite it or cancel it。