PAIP.SQL的跟踪与调试
当我们参数化查询的时候,有时候SQL出错,需要跟踪调试。。
JAVA参数查询的时候,是调用驱动转义,然后拼装成SQL,发往服务器,有API可以输出实际发出的SQL。。
最近的一个。NET项目SqlParameter参数查询时,一个参数化查询出错,需要跟踪实际执行的SQL。。
我用的是MSSQL EXPRESS 2008 。。
找了半天,终于找到个好工具. SqlExpressProfile.1.2.18 ,如果是企业版,会有个事件探查器,就是它了。。
安装好后,"C:\Program Files\DataWizard\SqlProfiler\Sql Profiler.exe",打开.设定DB连接。。
然后设定跟踪SQL,FILE》NEW SQL TRACE 》TAB“ EVENT”,设定事件为SqlStmtStaring,SqlStmtcompleted,RPCstarting,RPCcompleted,
监听的字段全部设ALL。
然后RUN就好了。。
然后启动你的程序,连接数据库,就可以看到发出的SQL语句了。。
如果是普通的SQL,事件是SqlStmtStaring类的。
如果是参数化的SQL,事件是RPCstarting..
结果如下:
exec sp_executesql N'select * from [rwkuSubitem] where id=@id ',N'@id nvarchar(2)',@id=N'16',@h=N'127'
可以看出,参数化的SQL实际是调用了服务器的sp_executesql 这个存储过程。。
上面还有执行开始时间与结束时间,可以用来跟踪SQL性能不佳的语句。。
如果一个程序没有源码,还可以用来跟踪其SQL来得到程序的流程..