想通过代理获取sql server客户端与服务器之间的网络数据,并对其进行解析,从而获得用户在客户端操作的sql语句,怎么样编写java程序实现这个代理?如何进行设置使客户端与服务器连接时经过本代理?如何对数据包进行解析?请各位高手帮帮忙!有急用!sql server网络

解决方案 »

  1.   

    这样也太乱来了吧,要获取操作的语句容易啊,直接在代理里面执行这个语句,然后存到一个表中你以后分析就可以拉
    2008以上可用,但是要注意,对于超长代码,SQLServer貌似没有任何一个内置工具可以完整获取。
    -- Current processes and their SQL statements  
    SELECT PRO.loginame AS LoginName  
          ,DB.name AS DatabaseName  
          ,PRO.[status] as ProcessStatus  
          ,PRO.cmd AS Command  
          ,PRO.last_batch AS LastBatch  
          ,PRO.cpu AS Cpu  
          ,PRO.physical_io AS PhysicalIo  
          ,SES.row_count AS [RowCount]  
          ,STM.[text] AS SQLStatement  
    FROM sys.sysprocesses AS PRO  
         INNER JOIN sys.databases AS DB  
             ON PRO.dbid = DB.database_id  
         INNER JOIN sys.dm_exec_sessions AS SES  
            ON PRO.spid = SES.session_id  
         CROSS APPLY sys.dm_exec_sql_text(PRO.sql_handle) AS STM       
    WHERE PRO.spid >= 50  -- Exclude system processes  
    ORDER BY PRO.physical_io DESC 
            ,PRO.cpu DESC;
      

  2.   

    profiler, extended event, sql trace都可以