Обратный инженерный список столбцов, на которые ссылается SQL-запрос
У меня есть SQL-запросы, которые я хотел бы знать, какие таблицы и столбцы упоминаются в запросе. Например из этого
USE AdventureWorks
GO
SELECT t.name AS table_name,
SCHEMA_NAME(schema_id) AS schema_name,
c.name AS column_name
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE '%EmployeeID%'
ORDER BY schema_name, table_name;
Я хотел бы знать, что из sys.tables, имя столбца, OBJECT_ID и так далее; sys.columns имеет OBJECT_ID и имя, на которое ссылаются.
Реальный запрос, который я получил из определений запросов / представлений, гораздо больше, чем этот, но это служит примером.
Могу ли я в любом случае добиться этого? Большое спасибо.
1 ответ
Единственный способ сделать это - проанализировать сам скрипт SQL и вернуть таблицы и столбцы. Существует целый ряд платных решений, которые сделают это для вас, например, General SQL Parser (и многие другие через Google, такие как бесплатный SQLParse на основе Python) или, если вам нужно сделать это только пару раз, вы можете использовать их онлайн-демонстрацию. версия здесь: http://107.170.101.241:8080/getTableColumn/ (верхняя ссылка отсюда).
Очевидно, что вы могли бы написать собственное решение, используя такие инструменты, как SMO, или просто попытаться создать свою собственную логику, но это много усилий...