Я пытался сделать то же самое.
Чтобы ответить на вопрос в комментариях о том, почему я хотел бы. Ну, я хочу определить базовый запрос с набором доступных столбцов и условий фильтрации, а также разрешить пользователю выбирать столбцы, которые он хочет отображать, а также включать и отключать определенные выражения в предложении where.
Я поиграл с несколькими вариантами XML-схемы и получил несколько приличных результатов. Мне даже удалось применить XSLT для извлечения текста SQL на основе предпочтений пользователей.
Я также искал парсеры SQL. http://www.sqlparser.com имеет один, но коммерческий, и его API в значительной степени стилизован под Delphi и, на мой взгляд, не очень доступен.
Как уже говорили другие, возможно использовать что-то вроде ANTLR для генерации кода C #, который будет анализировать SQL. Вы можете найти несколько грамматик SQL здесь . Самая последняя из перечисленных здесь грамматик MS SQL - MS SQL 2000. У меня не было времени поиграться с этим.
Я надеялся, что в SDK Oslo будет приличный M Grammer, который сможет анализировать запросы, но я пока не нашел.