
Раскладываем T-SQL по полочкам
Sergei_K 32 минуты назад Раскладываем T-SQL по полочкам Средний 14 мин 1.4K Блог компании АльфаСтрахование Microsoft SQL Server * Туториал Эта статья о библиотеке Microsoft.SqlServer.TransactSql.ScriptDom и опыте её...
GPT-5.6 31 Temmuz 2026'da yayınlanacak mı?
Вот важная новость с фронта ИИ: Sergei_K 32 минуты назад Раскладываем T-SQL по полочкам Средний 14 мин 1. 4K Блог компании АльфаСтрахование Microsoft SQL Server * Туториал Эта статья о библиотеке Microsoft. ScriptDom и опыте её использования для тех, кто работает с T-SQL — разработчиков и администраторов.
Если нужно анализировать зависимости в коде, менять структуру, разбирать сложные запросы или генерировать код, то эта библиотека — то, что нужно. ВведениеДопустим, у нас есть проект на T-SQL с многолетней историей, с сотнями таблиц и тысячами процедур и функций. За эти годы сменилось несколько составов разработчиков, и даже старожилы проекта уже не могут упомнить все детали и нюансы.
Технические детали
Проект растет, старое переписывается, новое добавляется. Кодовая база разрастается до десятков мегабайт, и для того, чтобы эффективно с ней работать, стандартных инструментов уже не хватает. Разборы проблем, уточнение нюансов бизнес-логики, переписывание функционала занимают много времени.
Например, нам нужно узнать, какие процедуры вставляют или изменяют записи в конкретной таблице. Простой текстовый поиск неэффективен — таблица может использоваться в десятках мест, ее название может оказаться в закомментированном блоке кода. Приходится самому просматривать каждый найденный фрагмент, чтобы убедиться, что таблица действительно изменяется.
Регулярные выражения тоже не спасают — синтаксис T-SQL допускает множество вариантов написания SQL. Можно попробовать поискать, используя возможности самого SQL Server — системное представление sys. sql_expression_dependencies и табличную функцию sys.
Отраслевые последствия
dm_sql_referenced_entities, — но и они не дадут полной картины. Нужен полноценный парсер кода. Парсер разбирает входной текст на компоненты в соответствии с правилами, описанными в синтаксической нотации языка, и строит из этих компонентов иерархию.
Такая иерархия называется AST (Abstract Syntax Tree) — абстрактное синтаксическое дерево. Каждый элемент этого дерева является типизированным объектом. Такой подход превращает разбор кода в обычную работу с формализованными объектами и их полями.
Анализируя эти объекты, их поля и иерархию, можно автоматизировать массу задач по обработке кода. Например, для нашей задачи можно распарсить весь T-SQL код проекта с известной детализацией и сохранить результат в графовой БД. В этом случае анализ зависимостей процедур и таблиц становится очень быстрым.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





