Как анализировать файлы SQL с помощью C #? - PullRequest
5 голосов
/ 01 июня 2010

Может кто-нибудь помочь мне?

У меня куча файлов .sql. Я хочу проанализировать (проверить) эти файлы перед выполнением их на сервере.

У меня есть много сайтов, которые разбирают код. Но я хочу разобрать код с помощью C #.

Так что, пожалуйста, вы можете направлять. Если есть какой-либо инструмент, DLL мне нужно использовать.

Я просто хочу проанализировать файл, а не выполнить его

Ответы [ 7 ]

13 голосов
/ 01 июня 2010

Один из способов сделать это - выполнить его на сервере, кроме как с помощью SET PARSEONLY ON (чтобы он анализировался, но не выполнялся): я думаю, что так делает MS Query Analyzer.

3 голосов
/ 01 июня 2010

Вы можете иметь процедуру, которая может получить запрос в качестве ввода и
на стороне SQL Server вы можете иметь оператор SET PARSEONLY ON и затем "запустить" запрос. На самом деле запрос не будет запущен, но о любых ошибках будет сообщено.

1 голос
/ 03 июня 2010

Набор инструментов для реинжиниринга программного обеспечения *1001* содержит парсеры SQL, используемые для создания многих инструментов на основе SQL.

Одним из таких инструментов является Formatter Formatter, который анализирует исходный текст и хорошо форматирует результат. Если средство форматирования не может проанализировать источник, он выдает ненулевой статус процесса.

Вы можете просто "отформатировать" файл; если форматирование завершается неудачно, синтаксис недопустим.

Эти форматеры являются коммерческими продуктами.

РЕДАКТИРОВАНИЕ Авг 2011: анализатор DMS SQL теперь обрабатывает полную стандартную грамматику SQL 2011.

1 голос
/ 01 июня 2010

Вы должны спросить себя дважды (или, может быть, даже три раза :-)), действительно ли вы хотите это сделать.

Даже если вы найдете решение, которое, кажется, работает для файлов, которые у вас есть сейчас, вероятно, будут все виды угловых случаев, которые не будут охвачены. Предложение о синтаксическом анализе его механизмом локальной базы данных является своего рода работоспособным, но все еще может быть много небольших синтаксических различий между тем, что вы делаете локально, и тем, что происходит на сервере.

Мой совет - позволить серверу анализировать и проверять его - это, по сути, единственный способ быть уверенным.

1 голос
/ 01 июня 2010

Antler Parser Generator - ваш лучший выбор. Там может быть предопределенная грамматика для версии SQL, которую вы хотите проанализировать уже.

0 голосов
/ 01 июня 2010

В Visual Studio раньше было что-то под названием Visual Studio для специалистов по базам данных. Позже он был добавлен в Team Developer.

В любом случае, они «скомпилировали» код sql, выполнив его в базе данных и протестировав результаты. Я полагаю, если так они проверяли, что это работает, то, вероятно, это лучший способ для вас.

0 голосов
/ 01 июня 2010

Быстрый Google вырвал http://www.antlr.org/ с плагином для MS SQL или одним из других диалектов SQL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...