我正在使用SQL Server 2008 R2,尝试对不透明的应用程序进行反向工程并复制其部分操作,以便我可以自动执行大量数据加载。
我认为它应该很容易 - 只需进入SQL Server Profiler,启动跟踪,执行GUI操作,并查看跟踪结果。我的问题是过滤器没有像我期望的那样工作。特别是,“Writes”列通常显示“0”,即使是明显对数据库进行更改的语句,例如INSERT
查询。这使我无法设置Writes >= 1
过滤器,就像我想做的那样。
我已经通过设置包罗万象的跟踪和运行应用程序来验证这正是发生的事情。我事先检查过表格,运行操作,然后检查表格,它肯定会对表格进行更改。我查看了跟踪,并且没有一行显示“Writes”列中的任何非零数字,包括显示INSERT
查询的行。查询没什么特别的......就像
exec sp_executesql
N'INSERT INTO my_table([a], [b], [c])
values(@newA, @newB, @newC)',
N'@newA int,@newB int,@newC int', @newA=1, @newB=2, @newC=3
(如果上面有错误,这是我的错字 - 声明肯定是在表格中插入一条记录)
我确定此行为的关键在于“写入”列的描述:“服务器代表事件执行的物理磁盘写入次数”。也许服务器正在缓存写入,它发生在Profiler的purvue之外。我不知道,也许这不重要。
有没有办法可靠地查找和记录所有更改数据库的语句?