Я пытаюсь выполнить некоторую проверку SQL-запросов программно в C # (без вызова реальной базы данных). По сути, я бы хотел, чтобы пользователь мог входить в представление, UDF или SP и немедленно проверять его зависимости. Пользователь будет вводить их в пользовательский инструмент для определения объектов базы данных.
Таким образом, если пользователь ввел:
CREATE VIEW someView AS SELECT name, address FROM users
Я мог бы вытащить зависимость «пользователей» и затем проверить мои коллекции объектов базы данных, которые хранятся в памяти (например, таблицы, представления и т. Д.), Чтобы убедиться, что зависимость существует в одном из них. Имейте в виду, что фактические представления / UDF / SP, введенные в мое пользовательское приложение, очень сложны, и анализ их сам по себе нежелателен.
В настоящее время я пытаюсь сделать это с помощью Microsoft.Data.Schema.ScriptDom.Sql.TSql100Parser. Это обеспечивает метод разбора, который возвращает DOM-представление запроса. Тем не менее, это ужасно сложный DOM, и мне нужно написать целый синтаксический анализатор только для него.
Есть идеи / предложения? Спасибо!