问题是这样的:
系统A(cs的,没有源码,不可能修改了)对数据库B(mssql)进行操作,操作包括增加、删除、修改,要在系统A对数据库B操作的时候,把操作的数据同步到其他服务器的数据库上,目前使用的是mssql的触发器,但发现系统A操作数据并不是使用sql语句的(部分是),而是exec sp_cursor 180150237,40,1之类的游标操作,这样触发器就不能工作了,有什么办法可以侦听到游标操作呢,即在执行游标的时候,可以获取表名、id的值,是修改还是删除还是增加???

解决方案 »

  1.   

    PROFILER api正在看,不知道能不能解决这个问题
      

  2.   

    既然用了 sp_cursor,那必定先得用类似于 sp_cursoropen 之类的语句来定义,楼主可以考虑跟踪
    sp_cursoropen
    sp_cursorfetch
    sp_cursorclose
    等语句,来获得用游标处理的语句.
    参见:
    http://jtds.sourceforge.net/apiCursors.html#_sp_cursor
      

  3.   

    如果实在不行,也不一定非要这样处理啊,做JOB试试看
      

  4.   


    请问job怎么弄,问题是要知道系统A处理了什么表的什么操作以及id值
      

  5.   

    系统A是用游标进行操作的,比如exec sp_cursor 180150233,33,1,N'',@东经起=112.733547,@东经止=112.74464719999999,@北纬起=33.835473999999998,@北纬止=33.8501154这样的语句是不会触发触发器的,这个语句是用profiler获取的