当前位置: 首页最新资讯 IT业界 → sql事件探查器轻松跟踪SQL语句执行顺序

sql事件探查器轻松跟踪SQL语句执行顺序

更多

sql事件探查器,可以创建跟踪来捕获与 sessions 事件类、ExistingConnection 和 TSQL 事件类相关的事件。将捕获的数据保存到一个跟踪文件,然后打开这个跟踪文件两次,使其显示在两个单独的   SQL   事件探查器窗口内。

sql事件探测器(sql事件探查器)
3.3
类别: 网络相关    大小:1.3M    语言: 中文
查看详细信息 >>

概括起来主要有如下几点:

1.查找执行最差的查询

例如,可以创建跟踪来捕获与 TSQL 和 Stored PRocedure 事件类(尤其是 RPC:Completed 和 SQL:BatchCompleted)相关的事件。在这个跟踪内包含所有数据列,按 Duration 分组并指定事件准则。例如,如果指定事件的 Duration 至少为 1,000 毫秒,则可以跟踪中排除运行时间短的事件。根据需要可以增大 Duration 的最小值。如果想一次只监视一个数据库,为 Database ID 事件准则指定一个值。

2.识别死锁原因

例如,可以创建一个跟踪来捕获与 TSQL 和 Stored Procedure 事件类(RPC:Starting 和 SQL:BatchStarting)以及 Locks 事件类(Lock:Deadlock 和 Lock:Deadlock Chain)相关的事件。在这个跟踪内包括所有数据列并按 Event Class 分组。如果想一次只监视一个数据库,为 Database ID 事件准则指定一个值。

若要查看死锁所涉及的连接,执行下列操作之一:

打开包含捕获的数据的跟踪,按 ClientProcessID 将数据分组并展开死锁所涉及的两个连接。

将捕获的数据保存到一个跟踪文件,然后打开这个跟踪文件两次,使其显示在两个单独的 SQL 事件探查器窗口内。按 ClientProcessID 将捕获的数据分组,然后展开死锁所涉及的进程 ID;每个死锁连接都在一个单独的窗口内。平铺窗口以查看导致死锁的事件。

3.监视存储过程的性能

例如,可以创建一个跟踪来捕获与 Stored Procedure 事件类(SP:Completed、SP:Starting、SP:StmtCompleted 和 SP:StmtStarting)和 TSQL 事件类(SQL:BatchStarting 和 SQL:BatchCompleted)相关的事件。在这个跟踪内包含所有数据列并按 ClientProcessID 分组。如果想一次只监视一个数据库,为 Database ID 事件准则指定一个值。同样,如果想一次只监视一个存储过程,为 Object ID 事件准则指定一个值。

4.审核 microsoft? SQL Server? 活动

可以使用 SQL 事件探查器审核 SQL Server 中的活动。例如,如果安全管理员需要随时了解谁登录到了服务器,可以创建 SQL 事件探查器跟踪,提供已登录到服务器或从服务器注销的用户的完整视图。之后,可出于法律目的使用这些信息记录活动,和出于技术目的使用这些信息跟踪违反安全策略的行为。

若要设置 SQL 事件探查器跟踪来跟踪已登录到服务器或从服务器注销的用户,请执行下列操作:

创建跟踪并选择 Audit Login Event。

若要返回适当的信息,请指定下列数据列:

EventClass(默认情况下选定)

EventSubClass

LoginSID

LoginName

监视每个用户的 Transact-SQL 活动。

可以创建跟踪来捕获与 sessions 事件类、ExistingConnection 和 TSQL 事件类相关的事件。将所有数据列包含在此跟踪内,不要指定任何事件准则,并按 DBUserName 将捕获的事件分组。

SQL事件探查器是SQL Server提供的一个图形工具,通过该工具主要可以实现如下功能:(摘录如下)

1、监视SQL Server实例的性能。

2、调试Transact-SQL语句和存储过程。

3、识别执行慢的查询。

4、在工程开发阶段,通过单步执行语句测试SQL语句和存储过程,以确认代码按预期运行。

5、通过捕捉生产系统中的事件并在测试系统中重播它们来解决SQL Server中的问题。这对测试和调试很有用,并使得用户可以不受干扰地继续使用生产系统。

6、审核和复查在SQL Server实例中发生的活动。这使得安全管理员得以复查任何的审核事件,包括登录尝试的成功与失败,以及访问语句和对象的权限成功与失败。

需要注意的是:运行SQL 事件探查器时,必须确保系统至少有10MB的可用空间,否则SQL 事件探查器的所有功能都将停止。

我们可以看到这个SQL的事件探查器的确很强大,SQL Server里面的执行的每一个动作,都可以在SQL事件探查器里看的一清二楚,这对于性能调剂,后期维护等等都是有非常大的帮助的。但是,问题也就来了,在你的软件开发完毕后,作为软件的开发方而言并不希望使用软件的使用者通过SQL事件探查器来跟踪SQL语句。那么这种情况该怎么办呢?有没有什么办法不能让SQL事件探查器跟踪到呢?

下面我们来探索这个问题:

假设你数据库里面有一张表:Organization,里面有一个字段是password,那么当你执行下面的SQL语句的时候:

SELECT [Password] FROM [Organization]。

那么你会吃惊的发现,在SQL事件探查器里面显示如下内容:

— 在该事件文本中找到“password”。

— 出于安全原因,已用该注释替换此文本。

这样,就看不到你执行的SQL语句的内容了。

但是,你可以会说,如果在我的Organization里面没有password字段的话还不是要显示出来?确认如此,但是官方介绍说:只要在查询的过程中,任意地方出现关键词:password,encryption,sp_setapprole之一,整个查询过程都将被隐藏,任意地方,当然也包括注释中。例如执行下面的语句:

--Password

/*保护SQL语句*/

SELECT 1 FROM [Organization1]

同样的我们在SQl事件探查器里面看到的是:

总结:

这样就很清楚的明白:如果要避免SQL语句在SQL事件探查器里面被跟踪的话,只需要添加一个关键词的注释就可以把SQL语句保护起来了。

可喜的是,我开发的系统所依赖的第三方系统软件并没有对此SQL语句做保护,故可以通过SQL事件探查器分析软件对数据库进行了那些操作,进一步分析数据库表的结构。

可以想象一下如果软件中的SQL语句都做了保护的话,如果只能过产品或者发布好的软件要来分析数据库表的结构是何等的困难?

请各位同仁指教,谢谢!

-

资料引用:http://www.knowsky.com/345647.html

 

热门评论
最新评论
昵称:
表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
字数: 0/500 (您的评论需要经过审核才能显示)