SQL Server中事件探测器Profiler的使用

简单的新建一个跟踪就不在这里多说了。文件 --> 新建 --> 跟踪。(也可以直接使用功能按钮)
我们这里主要是讲一个精确的跟踪。
注:如果事件探测器在处理过程中检测到了Password,则事件探查器中根本看不到一句数据库SQL语句,所有的操作全部都用语句句柄来做了,看到最多的就是 exec sp_execute 11,1,即便在事件探查器中添加参数SP:StmtStaring,SP:StmtCompleted,也没有结果,探查器给替换了文本。真是万恶,这样就起到了隐藏代码的目的。

1、跟踪指定的数据库
有时我们机器上跑了几个服务,连了不止一个数据库,而我们又只想探测其中的一个或几个数据库。这时我们可以设置事件探测器的筛选条件。
① 文件 --> 属性 --> “筛选”选项卡。(注意:此时需要将运行的跟踪提前停止,这样才能在这里设置筛选条件,否则只能查看)
② 找到“DatabaseID”,然后将你需要探测的数据库的id填入即可。
查找数据库id的方法:(假设数据库名为scm02)
SELECT dbid FROM master.dbo.sysdatabases WHERE (name = 'scm02')

这里也有一个DatabaseName的筛选条件,我试了,但是没有效果,暂时不知道这个筛选条件是怎么用的。

 

2、设置筛选的数据列
我们新建跟踪时,默认选择的“跟踪模板”是SQLProfilerStander标准模板,里面筛选的数据列有些是不必要的。我们如果想把多余的筛选数据去掉的话,可以按如下操作:
文件 --> 属性 --> “数据列”选项卡。(注意:需要暂停当前跟踪)

筛选条件详解:(http://msdn.microsoft.com/zh-cn/library/ms175827.aspx

数据列名称

数据类型

说明

列 ID

可筛选

ApplicationName

nvarchar

客户端应用程序的名称,该客户端应用程序创建了指向 SQL Server 实例的连接。 此列由应用程序传递的值填充,而不是由所显示的程序名填充。

10

ClientProcessID

int

主机为运行该客户端应用程序的进程分配的 ID。 如果客户端提供了客户端进程 ID,则填充此数据列。

9

CPU

int

用户在连接过程中使用的 CPU 时间(毫秒)。

18

DatabaseID

int

由 USE database 语句指定的数据库的 ID;如果未对给定实例发出 USE database 语句,则为默认数据库的 ID。 如果在跟踪中捕获 ServerName 数据列而且服务器可用,则 SQL Server Profiler 将显示数据库名。 可使用 DB_ID 函数来确定数据库的值。

3

DatabaseName

nvarchar

正在其中运行用户语句的数据库的名称。

35

Duration

bigint

用户自登录开始持续的时间(大约时间)。

13

EndTime

datetime

注销的结束时间。

15

EventClass

int

事件类型 = 15。

27

EventSequence

int

特定事件在请求中的顺序。

51

EventSubClass

int

登录使用的连接类型。 1 = 非共用,2 = 共用。

21

HostName

nvarchar

正在运行客户端的计算机的名称。 如果客户端提供了主机名,则填充此数据列。 若要确定主机名,请使用 HOST_NAME 函数。

8

IsSystem

int

指示事件是发生在系统进程中还是发生在用户进程中。 1 = 系统,0 = 用户。

60

LoginName

nvarchar

用户的登录名(SQL Server 安全登录名或 Microsoft Windows 登录凭据,格式为“DOMAIN\username”)。

11

LoginSid

image

登录用户的安全标识号 (SID)。 您可以在 sys.server_principals 目录视图中找到此信息。 服务器中的每个登录名都具有唯一的 SID。

41

NTDomainName

nvarchar

用户所属的 Windows 域。

7

NTUserName

nvarchar

Windows 用户名。

6

Reads

bigint

用户在连接过程中发出的逻辑读取 I/O 的数量。

16

RequestID

int

包含该语句的请求的 ID。

49

ServerName

nvarchar

所跟踪的 SQL Server 实例的名称。

26

 

SessionLoginName

Nvarchar

发起会话的用户的登录名。 例如,如果您使用 Login1 连接到 SQL Server,再以 Login2 的身份执行语句,则SessionLoginName 将显示 Login1,而 LoginName 将显示 Login2。 此列将同时显示 SQL Server 登录名和 Windows 登录名。

64

SPID

int

发生该事件的会话的 ID。

12

StartTime

datetime

该事件(如果存在)的启动时间。

14

Success

int

1 = 成功。 0 = 失败。 例如,值为 1 时表示权限检查成功;值为 0 时表示权限检查失败。

23

Writes

bigint

用户在连接过程中发出的逻辑写入 I/O 的数量。

17

GroupID

int

在其中激发 SQL 跟踪事件的工作负荷组的 ID。

66

 

3、探测数据库的连接名和密码、数据库id等
有时候我们使用数据库时不知道这个数据库的连接名和密码,有时还需要查看某个数据库的id(DatabaseID),这个时候我们就可以借助事件探测器来得到我们想要的数据。
新建一个跟踪,然后执行一条sql语句,可以是客户端执行,也可以是企业管理器或查询分析器中执行。
对应查看事件探测器中探测到的结果:
LoginName:连接名(一般为sa)
ClientProcessID:连接的密码(通常我们设置的是123)
DatabaseID:数据库的id(需要我们在筛选列中添加这一列)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值