Получить зависимости от SQL-запроса - PullRequest
0 голосов
/ 21 апреля 2009

Я пытаюсь выполнить некоторую проверку SQL-запросов программно в C # (без вызова реальной базы данных). По сути, я бы хотел, чтобы пользователь мог входить в представление, UDF или SP и немедленно проверять его зависимости. Пользователь будет вводить их в пользовательский инструмент для определения объектов базы данных.

Таким образом, если пользователь ввел:

CREATE VIEW someView AS SELECT name, address FROM users

Я мог бы вытащить зависимость «пользователей» и затем проверить мои коллекции объектов базы данных, которые хранятся в памяти (например, таблицы, представления и т. Д.), Чтобы убедиться, что зависимость существует в одном из них. Имейте в виду, что фактические представления / UDF / SP, введенные в мое пользовательское приложение, очень сложны, и анализ их сам по себе нежелателен.

В настоящее время я пытаюсь сделать это с помощью Microsoft.Data.Schema.ScriptDom.Sql.TSql100Parser. Это обеспечивает метод разбора, который возвращает DOM-представление запроса. Тем не менее, это ужасно сложный DOM, и мне нужно написать целый синтаксический анализатор только для него.

Есть идеи / предложения? Спасибо!

1 Ответ

2 голосов
/ 21 апреля 2009

Существует процедура, которую вы можете использовать с именем sp_depends ... однако она не является отказоустойчивой из-за отложенного разрешения имен. На самом деле не существует безопасного способа сделать это, он стал немного лучше в последних версиях, но все еще боль в шее

прочитайте это Вы зависите от sp_depends (без каламбура) чтобы понять, что я имею в виду

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