用编程的方式将当前服务器上SQL SERVER中正执行的所有T-SQL语句记录下来

    技术2026-04-04  2

     

    标题所描述的功能是简单的,下面的例子也很简单,但是你可以根据自己的需要进行扩充功能,我这里只是抛砖引玉而以,呵呵……,其实你有时间可以自己做一个SQL Server Profiler玩一玩。支持SqlServer2005和SqlServer2008 第一步: 添加引用:Microsoft.SqlServer.ConnectionInfo using  Microsoft.SqlServer.Management.Trace; using  Microsoft.SqlServer.Management.Common; 第二步: 配置连接信息             ConnectionInfoBase conninfo  =   new  SqlConnectionInfo();            ((SqlConnectionInfo)conninfo).ServerName  =   " ServerName " ;            ((SqlConnectionInfo)conninfo).UserName  =   " UserName " ;            ((SqlConnectionInfo)conninfo).Password  =   " Password " ;            ((SqlConnectionInfo)conninfo).UseIntegratedSecurity  =   false ; 第三步: 创建mytdf.tdf文件,放入运行程序所在的文件夹里。 注:.tdf文件是用来在后面做为读取数据的模版用的,你可以在SQL Server Profiler里创建模版自己创建一个新的文件。 读取信息(包括T-SQL语句等等,按需要添加,这里只添加获取正在执行的T-SQL语句功能)             TraceServer trace  =   new  TraceServer();            trace.InitializeAsReader(conninfo,  " mytdf.tdf " );             while  (trace.Read())            {                 // Statements;                 Console.WriteLine(trace[ " TextData " ]);            }            Console.Read();            trace.Close(); 全部代码: using System;using System.Collections.Generic;using System.Text;using Microsoft.SqlServer.Management.Trace;using Microsoft.SqlServer.Management.Common;namespace ConsoleApplication2{    class Program    {        static void Main(string[] args)        {            ConnectionInfoBase conninfo = new SqlConnectionInfo();            ((SqlConnectionInfo)conninfo).ServerName = "ServerName";            ((SqlConnectionInfo)conninfo).UserName = "UserName";            ((SqlConnectionInfo)conninfo).Password = "Password";            ((SqlConnectionInfo)conninfo).UseIntegratedSecurity = false;            TraceServer trace = new TraceServer();            trace.InitializeAsReader(conninfo, "mytdf.tdf");            while (trace.Read())            {                //Statements;                Console.WriteLine(trace["TextData"]);            }            Console.Read();            trace.Close();        }    }}
    最新回复(0)