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

标题所描述的功能是简单的,下面的例子也很简单,但是你可以根据自己的需要进行扩充功能,我这里只是抛砖引玉而以,呵呵……,其实你有时间可以自己做一个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();
        }
    }
}

原文地址:http://www.cnblogs.com/skysing/archive/2009/08/18/1548696.html

原文地址:https://www.cnblogs.com/ghostqf/p/8352242.html

时间: 2024-09-30 07:48:24

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

谈一谈SQL Server中的执行计划缓存(上)

原文:谈一谈SQL Server中的执行计划缓存(上) 简介     我们平时所写的SQL语句本质只是获取数据的逻辑,而不是获取数据的物理路径.当我们写的SQL语句传到SQL Server的时候,查询分析器会将语句依次进行解析(Parse).绑定(Bind).查询优化(Optimization,有时候也被称为简化).执行(Execution).除去执行步骤外,前三个步骤之后就生成了执行计划,也就是SQL Server按照该计划获取物理数据方式,最后执行步骤按照执行计划执行查询从而获得结果.但查询

SQL Server中的CLR编程——用.NET为SQL Server编写存储过程和函数

原文:SQL Server中的CLR编程--用.NET为SQL Server编写存储过程和函数 很早就知道可以用.NET为SQL Server2005及以上版本编写存储过程.触发器和存储过程的,不过之前开发的系统要么因为历史原因用的是SQL2000要么根本用不着在SQL Server中启用CLR,所以一直没有尝试.最近因为项目的原因,在这方面做了一个调研,现在在这里分享一下心得. 首先要说明的是要在SQL Server中启用CLR必须是在SQL Server2005及以上版本,其次在默认情况下是

Linux服务器上的tomcat中部署web项目

首先了解一下下面几个概念,讲得不太准确: 1.JVM JVM是class以及jar(实际上就是很多个class压缩在一起)的运行环境,特征就是java和javaw命令,通过这两个命令,你可以执行class和jar文件.你可以通过-classpath参数指定你需要加载的jar文件 2.JDK JDK就是JAVA的命令行开发环境,内置了JVM,特征就是javac命令,这个命令允许你将.java源文件批量或者单个编译成.class文件,从而可以通过JVM的java命令执行.在编译时你可以通过-clas

sql server中使用链接服务器访问oracle数据库

一.  安装配置oracle客户端 要访问orcale数据,必须在访问的客户端机器上安装oracle客户端. Orcale有两种形式的客户端: l         完整的客户端 包括访问服务器端数据库的基本Oracle 的 Microsoft OLE DB 访问接口需要 Oracle Client Software Support File以及 SQL*Net .还包括用于配置客户端设置的工具.sqlplus.企业管理器等一系列的工具. l         立即客户端(instant clien

sql server中分布式查询随笔(链接服务器(sp_addlinkedserver)和远程登录映射(sp_addlinkedsrvlogin)使用小总结)

由于业务逻辑的多样性,经常得在sql server中查询不同数据库中数据,这就产生了分布式查询的需求 现我将开发中遇到的几种查询总结如下: 1.access版本 --建立连接服务器 EXEC sp_addlinkedserver --要创建的链接服务器名称  'ai',             --产品名称               'access',     --OLE DB 字符 'Microsoft.Jet.OLEDB.4.0',  --数据源 --格式: -- 盘符:\路径\文件名 -

SQL Server中数据库文件的存放方式,文件和文件组 (转载)

简介 在SQL SERVER中,数据库在硬盘上的存储方式和普通文件在Windows中的存储方式没有什么不同,仅仅是几个文件而已.SQL SERVER通过管理逻辑上的文件组的方式来管理文件.理解文件和文件组的概念对于更好的配置数据库来说是最基本的知识. 理解文件和文件组 在SQL SERVER中,通过文件组这个逻辑对象对存放数据的文件进行管理. 先来看一张图: 我们看到的逻辑数据库由一个或者多个文件组构成 而文件组管理着磁盘上的文件.而文件中存放着SQL SERVER的实际数据. 为什么通过文件组

转:Sql Server中的表访问方式Table Scan, Index Scan, Index Seek

0.参考文献 Table Scan, Index Scan, Index Seek SQL SERVER – Index Seek vs. Index Scan – Diffefence and Usage – A Simple Note oracle表访问方式 Index Seek和Index Scan的区别以及适用情况 1.oracle中的表访问方式 在oracle中有表访问方式的说法,访问表中的数据主要通过三种方式进行访问: 全表扫描(full table scan),直接访问数据页,查找

转:SQL Server中服务器角色和数据库角色权限详解

当几个用户需要在某个特定的数据库中执行类似的动作时(这里没有相应的Windows用户组),就可以向该数据库中添加一个角色(role).数据库角色指定了可以访问相同数据库对象的一组数据库用户. 数据库角色的成员可以分为如下几类: Windows用户组或用户账户 SQL Server登录 其他角色 SQL Server的安全体系结构中包括了几个含有特定隐含权限的角色.除了数据库拥有者创建的角色之外,还有两类预定义的角色.这些可以创建的角色可以分为如下几类: 固定服务器 固定数据库 用户自定义 固定服

SQL Server中使用数据库快照的方式来完成测试环境中数据库的轻量级备份还原操作

原文:SQL Server中使用数据库快照的方式来完成测试环境中数据库的轻量级备份还原操作 在开发或者测试环境的数据库中,经常会发现有开发或者测试人员误删除表或者数据的情况,对于开发或者测试库,一般都没有安排定时的备份任务去备份数据库,一方面是由于存储资源有限,不太可能给开发或者测试环境准备大量的存储空间,二是必要性不是很强,开发或者测试库的数据库对象变化太多,通过还原备份的方式又有可能冲掉其最近新建的数据库对象.但是不得不面对的问题就是个别人在执行update或者delete操作的时候“忘了加