Кто-либо может помочь мне?
У меня есть набор .sql файлов. Я хочу проанализировать (проверяют) те файлы прежде, чем выполнить их на сервере.
У меня есть много онлайн-сайтов, которые анализируют код. Но я хочу проанализировать код с помощью C#.
Таким образом, можете Вы вести. Если существует какой-либо инструмент, dll я должен использовать.
Я просто хочу проанализировать файл и не выполнить его
Способ сделать это - выполнить его на сервере, только с SET PARSEONLY ON (чтобы он разбирался, но не выполнялся): Я думаю, что именно так это делает MS Query Analyzer.
У вас может быть процедура, которая может получать запрос в качестве входных данных и
на стороне SQL Server вы можете использовать инструкцию SET PARSEONLY ON , а затем "запустить"
запрос. На самом деле запрос не будет выполняться, но будут сообщены любые ошибки.
Генератор парсера рогов - ваш лучший выбор. Для той версии SQL, которую вы хотите проанализировать, может существовать предопределенная грамматика.
Вам следует дважды (а может быть, даже трижды :-)) спросить себя, действительно ли вы хотите это сделать.
Даже если вы найдете решение, которое, похоже, работает с файлами, которые у вас есть сейчас, вероятно, будут всевозможные угловые случаи, которые не будут рассмотрены. Предложение о том, чтобы локальный механизм базы данных проанализировал его, в некотором роде работает, но все же может быть много небольших синтаксических различий между тем, что вы делаете локально, и тем, что происходит на сервере.
Мой совет - позволить серверу проанализировать и проверить его - это, по сути, единственный способ быть действительно уверенным.
В Visual Studio раньше было что-то под названием Visual Studio для специалистов по базам данных. Позже он был добавлен в Team Developer.
В любом случае, они «скомпилировали» код sql, выполнив его в базе данных и проверив результаты. Я полагаю, что если они так проверяли, что это работает, это, вероятно, лучший способ для вас тоже.
В DMS Software Reengineering Toolkit есть парсеры SQL, используемые для создания многих инструментов на основе SQL.
Одним из таких инструментов является FormatterFormatter, который анализирует исходный текст и красиво форматирует результат. Если форматтеру не удается разобрать исходный текст, он выдает ненулевой статус процесса.
Вы можете просто "отформатировать" файл; если форматирование не удается, это не является законным синтаксисом.
Эти форматеры являются коммерческими продуктами.
EDIT Aug 2011: Парсер DMS SQL теперь обрабатывает полную грамматику стандарта SQL 2011.
Быстрый Google обнаружил http://www.antlr.org/ с плагином для ms sql или одного из других диалектов sql