SQL 查询记录分析

题记

最近遇到一个这样的问题:

客户原有一个 ERP 系统,现在需要在其上做一个二次的开发。

具体来说,我现在需要另做一个手机客户端让客户可以下单,然后将订单写入到原来 ERP 的数据库中。

此前的二次开发都是只读型,做些报表什么的,只是读取数据库的内容,这次遇到了写入问题,因此具体的技术方案值得记录。

原来的 erp 系统使用的是 SQL Server


技术方案

原有的 ERP 并不是开源的,也没有具体的数据库表说明,因此在业务逻辑之内,一切就像一个黑匣子,从业务逻辑到数据存储的规则,我们知之甚少。

但是从目标上看,下一张订单无非就是填充一个表单,然后将内容写入若干个表中,那么我们只需要分析在原有 erp 后台中,做一个业务写动作,例如插入一张订单的时候,相关联的 INSERT/UPDATE/DELETE 语句是哪些,大概就可以原封不动地模拟这个业务操作了。

那么,我们需要一个记录一定时间范围内的 SQL 查询语句的工具。

在 MYSQL 里面,我们可以让这些语句输出到日志中,参考如下两个 StackOverflow 问题:

http://stackoverflow.com/q/6479107/2544762

http://stackoverflow.com/q/303994/2544762

然后我们查看日志文件就可以做到。

但是在 MSSQL 里面这个有点麻烦,下面参考了一些文章:

http://stackoverflow.com/a/17219389/2544762

  1. 一个 SSMS 增强插件,只是做实时的 SQL 查询分析,纯粹的客户端工具,其实跟这个没什么关系。

SSMS Tools Pack: http://www.ssmstoolspack.com/

  1. Apex SQL Log: 最终选用的,SQL2005+ 日志分析器

这个是商业版的,有试用。

原理是这样的,这个软件有一个客户端和一个服务器端。

需要在服务器端里面安装,然后服务器端就会开通一个服务,让客户端去调用。

这个服务会读取分析 .ldf 的数据库日志文件,然后在客户端就可以看到每次修改数据库的查询列表,并且还可以随意生成重做 (redo) 或者 (undo) 的脚本,这样就可以实现我们的需求了。

官网链接: https://www.apexsql.com/

破解版: http://pan.baidu.com/s/1qW80Zgw

  1. Log Explorer: 这个实现的功能是类似的,但是对于 2000 版本可用

参考文章: http://bbs.csdn.net/topics/210071405

破解版: http://pan.baidu.com/s/1dD71JhR

实践结论

因为客户的数据库是 SQL2008 的,因此采用了 Apex SQL Log 工具。

注意需要获得数据库所在服务器的 OS 权限才能安装服务器端,然后才可以通过客户端进行连接管理。


【转载请附】愿以此功德,回向 >>

原文链接:https://www.huangwenchao.com.cn/2015/05/mssql-log-analysis.html【SQL 查询记录分析】

发表评论

电子邮件地址不会被公开。 必填项已用*标注