嗯,我发现另一个问题,虽然时间有点晚,但如果以后有人有用的话,我已经实现了一个开源(AGPL)的T-SQL格式化程序:http://www.architectshack.com/PoorMansTSqlFormatter.ashx。我的方法绝对不涉及完整的SQL解析(T-SQL是一种非常复杂的语言,我不太可能自己开发和维护完整的解析器),而是通过关键字对SQL进行标记化并识别主要结构。结果是一个部分解析树,其中所有与格式相关的部分都被分离出来。如@astander所链接的答案中所述,有商业选项用于全面的SQL解析,并且有很多解析器构建器可用 - 但据我所知,没有完整的开源T-SQL解析器。制作简单的SELECT、UPDATE、DELETE解析器很容易 - 处理派生表和子查询会变得有点困难;然后是输出子句、合并语句、多语句脚本、CTE、T-SQL包含的几十个DDL语句等等:它变得混乱了。