SQL学习--00002--LogonTrigger(续)--20110425

我的上一篇博客提到了Logon Trigger会被触发多次的情况,经过几番的资料查找后,终于找到问题的最终原因了。

下面详细解释一下。

 

1、触发器功能调整

(1)用于记录触发器事件内容的表,增加了AppName(AppName可以帮忙解决很多问题)、HostName、OriginalLogin等信息

 

(2)AfterLogon Trigger的内容相应的做了调整

 

2、观察触发器记录的数据

     (1)     发现有部分的AppName是“Microsoft SQL Server Management Studio - Transact-SQL IntelliSense”!

     也就是SSMS2008自带的IntelliSense(智能感知,智能提示) Enable导致的,在SSMS里把这个关闭后,就不会再有这样的数据触发“登录触发器”了。

     (2)     关闭IntelliSense后,每次新建Connection都会触发两次“登录触发器”

     触发两次的记录中,只有SPID是不一样的,一个SPID是新建的Connection显示的SPID,另外一个则是肉眼不可见的。

     使用DBCC INPUTBUFFER把这个SPID的内容查出来看一下,发现都是:

      

     官方文档上没有合理的解释,最后发现这样一个解释:这个Session是用于ActivityMonitor获取数据的,参考下面的URL。

     http://stackoverflow.com/questions/4021428/where-are-all-those-sql-server-sessions-from

 

3、遗留问题

    到了这个时候,基本上也就搞清楚为什么LogonTrigger会被触发多次了,但是又带来两个新的问题!

    1、为什么新建Connection的时候会多一个Session,且该Session是为了Activity Monitor使用的,这个可以设置关闭?

    2、研究了一下ActivityMonitor,发现一个新的问题,使用SQLServer Authentication连接到Remote Instance时,%Processor Time这个窗口是无法使用的,在微软的官方文档上找到了一点点相应的解答,如下:

https://connect.microsoft.com/SQLServer/feedback/details/350723/ssms-activity-monitor-does-not-show-cpu-time-for-remote-instances

http://connect.microsoft.com/SQLServer/feedback/details/551890/ssms-activity-monitor-resume-does-not-always-show-processor-time

 

    有时间值得仔细的研究一下,如何使用 Activity Monitor 监控 Remote Instance 的CPU状态!

 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值