我的日志文件包含以下格式的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 mentioned here
相反的东西答案 0 :(得分:1)
您可以使用General SQL Parser。
答案 1 :(得分:0)
我最终使用了Microsoft.Data.Schema.ScriptDom中提供的TSql100Parser。
本质上,它将解析SQL查询,并且在我的问题中查询的情况下,返回一个'ExecuteStatement',分解为它的各个部分(语句,变量,变量值等)。然后我操纵它,并使用Sql100ScriptGenerator将生成的SQL语句格式化为人类可读的东西。