Создание удобочитаемого SQL из файлов журнала - PullRequest
1 голос
/ 21 октября 2011

У меня есть файлы журналов, которые содержат операторы SQL в следующем формате:

exec sp_executeSQL @stmt=N'SELECT Field1, Field2, Field3 FROM MyTable WHERE Field1 = @P1 AND Field2 = @P2', @params=N'@P1 Numeric(15,3), @P2 varchar(20)', @P1='1234.54', @P2='Hello'

Я хотел бы отформатировать его так:

SELECT Field1, Field2, Field3
FROM   MyTable
WHERE  Field1 = 1234.54
AND    Field2 = 'Hello'

Анализ сообщения вручную (т.е.удаление оператора и замена @ P1, @ P2 их соответствующими значениями возможна, но вам нужно иметь дело со всеми различными типами)

Я ищу что-то, противоположное GetCommandLogString упомянутых здесь

Ответы [ 2 ]

1 голос
/ 21 октября 2011

Вы можете использовать Общий анализатор SQL .

0 голосов
/ 10 ноября 2011

В итоге я использовал TSql100Parser, доступный в Microsoft.Data.Schema.ScriptDom.

По сути, он будет анализировать SQL-запрос, и в случае запроса, который у меня был в моем вопросе, будет возвращаться 'ExecuteStatement', разбитый на различные части (оператор, переменные, значения переменных и т. Д.). Затем я манипулирую этим и использую Sql100ScriptGenerator для форматирования результирующего оператора SQL во что-то удобочитаемое человеком.

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