从大的方面来说,bug无非就是:数据库bug;程序bug。
sql捕获在实际应用中很有用处。对于那些未知的bug,当你无从下手时,直接捕获sql,执行sql。
应用细节1
公司做的web端项目和手机端项目要进行数据整合。项目经理把程序部署好,把数据库、ip、端口配置好。然后进行上线测试,结果发现手机端没数据。然后项目经理再把数据库部署在一个新的ip、端口,手机端还是没数据。然后就只有等产品经理出差回来后进行解决。产品经理直接打开sqlserver profiler,然后打开手机端。这时sqlserver profiler就捕获到了手机端调用的sql。然后把这条sql拷贝到数据库进行执行,就会出现错误消息。解决这条sql的错误,问题就解决了。
应用细节2
我要重构以前的模块,我也有了以前代码的后台,但是我看不懂以前后台的sql到底是干嘛的。“”一个注释都没有,sql整页整页的,还有很多if else 啊for 循环啊这些逻辑代码都写在sql里“”。于是我打开sqlserver profiler,打开以前的系统,打开一个页面,然后捕获到这个页面调用的sql。然后把这条sql拷贝到数据库中,改吧改吧,实现新的功能。最后在原先模块的相应对方,修改sql,完成新功能,完成任务。
使用技巧
网上有很多技巧,有一些很底层,比如什么cpu,还有性能;有一些有肤浅,比如过滤其他主机,只要本机调用的sql。
我个人一般就设定一个属性,TextData。
1.TextData是什么
TextData就是你调用的sql的文本。比如你调用sql“”select * from aaa“”;那么数据库捕获到你调用这个行为的TextData属性就是“”select * from aaa“”。
2.TextData怎么用
上面的操作的意思就是:捕获所有sql中带有“”select * “”的行为。
当然你对sql了解的越具体,那你捕获的sql就更精确。
这个就比上面那个更精确。
通过对sqlserver profiler的使用,我就能解决更加困难的问题。那些无从下手的,听都没听过的,都能找到思路。