- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Silverlight实现对Sql Server Profiler的SQL实时监控
Silverlight实现对Sql Server Profiler的SQL实时监控
Sql Server Profiler作为Microsoft Sql Server数据库系列的性能工具,通过它可以对数据库的运行状况进行实时跟踪,从中可以找到慢查询或者死锁的SQL语句,从而去优化系统。本文介绍如果通过Silverlight来对Sql Server Profiler进行实时监控(数据库环境以Sql Server 2005为例)
首先,先来看下SqlServer数据库自带的性能工具Sql Server Profiler,新建一个跟踪:
我们选择默认的模板Standard,其他都不变,点击运行:
从中可以看到数据库中的SQL的运行状态,EventClass作为事件类型,TextData作为运行的SQL脚本,ApplicationName作为一个应用程序的执行源的名称,比如说,从.Net应用程序执行的SQL脚本就是.Net SqlClient Data Provider,再比如说,我直接从数据库客户端工具执行一条SQL语句,可以看到ApplicationName为 ”Microsoft SQL Server Management Studio - 查询“,因此我们通过ApplicationName字段得到程序的执行源,LoginName作为一个数据库的账户,一般系统用户为sa,包括CPU/Reads/Writes在此上面也是一目了然,Duration比较有用,可以查看执行语句的耗时,后面还包括StartTime的开始时间和EndTime的结束时间,当然一些隐藏的列我就不一一列举了,有兴趣大家可以勾选查看下。
如果我要定义一个符合自己需要的模板呢,那么可以通过新建/编辑模板来实现:
上面有很多的事件类型的选择,可以根据自己的需要定制Event,这里我以最简单的方式,就选择了TSQL:SQL BatchCompleted:
并且列选择一个数据库DatabaseName,类似于编辑 MyEnt,这样该模板文件只会在MyEnt为名称的数据库中进行SQL执行跟踪了:
最后点击保存即可
那么,在.Net上怎么实现对于Sql Server Profiler的使用和监控,实际上,Sql ServerProfiler本身为.Net开发的,后来我在SqlServer2005数据库的安装目录 C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies 中,找到一个Microsoft.SqlServer.ConnectionInfo.dll,这个dll就可以实现执行Sql的监控。
开始创建项目,其中,监控程序是一个控制台程序,而Silverlight客户端程序是一个对于SqlServerProfiler实时监控的展示,Silverlight的客户端程序通过Socket和监控程序进行通信。由于Silverlight对于TCP通信的限制,必须往监控程序发送策略请求,并且对于TCP通信来说,目前Silverlight的使用端口必须为4502-4530,于是必须在监控端先设置一个Policy.xml的策略文件:
?xml version=1.0 encoding =utf-8? access-policy cross-domain-access policy allow-from domain uri=* / /allow-from grant-to socket-resource port=4502-4530 protocol=tcp / /grant-to /policy /cross-domain-access /access-policy
现在我将策略请求,监听SL客户端连接/数据收发请求,数据库监听跟踪请求,分别创建3个线程:
//创建Socket来监听策略请求和发送
this._policyThread = this.CreateThread(this.PolicyRequest); //创建Socket来监听信息请求和发送 this._infoThread = this.CreateThread(this.InfoRequest); //创建Socket来监听数据库跟踪请求和发送 this._traceServerThread = this.CreateThread(this.TraceServerRequest);
PolicyRequest,InfoRequest的方法具体看文章末尾的附件源代码,这里主要说一下TraceServerRequest的方法:
SqlConnectionInfo conninfo = new SqlConnectionInfo();
您可能关注的文档
最近下载
- 2024年安徽省高考化学真题卷(含答案与解析).pdf VIP
- 司马光的故事市公开课一等奖省赛课微课金奖PPT课件.pptx
- 2014010904013王亮森题目四.docx
- 《国有企业管理人员处分条例》考试题库200题(含答案).docx
- 2023年楚雄师范学院计算机科学与技术专业《操作系统》科目期末试卷A(有答案).docx VIP
- 《接力切换技术原理》课件.pptx VIP
- 电子科技大学820计算机专业基础考研真题试题(含答案)2011—2016年.pdf
- 公司治理:基本原理及中国特色-姜付秀-第10章+法律机制.pptx VIP
- 课件:兽药的合理使用.ppt
- 弗莱雷《被压迫者教育学》.pdf
文档评论(0)