本文主要讲解.NET CLR,其中最主要的.NET CLR性能检测,通过此文你会对.NET CLR有更深刻的了解的
控制代码提升也是数据库管理员的一个关键角色。.NET CLR允许开发者直接在共享系统上部署,那么它所导致的最终在生产环境中部署产生的不可控源代码和错误几乎是不可避免的。
当建立了一个错误版本的源代码或者创建了一个从未测试过的代码时都会马上要求重编译。最终测试环境中不能再有问题出现,因为在资源不能匹配的时候产品程序集是不能做调试的。
下面的例子例举了Microsoft C# 程序编译器 csc.exe (.NET Framework 中的C# 编译器).
- Csc.exe /noconfig /nowarn:"1701;1702" /warn:4 /define:DEBUG;TRACE
- /reference:
- C:\WINDOWS\Microsoft.NET\Framework\v2.0.50215
- \System.Data.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50215
- \System.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50215
- \System.Web.Services.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\
- v2.0.50215
- \System.XML.dll /debug+ /optimize- /out:obj\Release\
- MainframeWebService.dll
- /target:libraryIBMSystemCode.cs AssemblyInfo.cs "Web References\
- com.Mainframe.webservices\Reference.cs"
这是一个调用web服务的例子,下面的阶段要求连续的代码,这将在下面的例子中提到。这个程序是安装在.NET Framework 2.0 SDK 下,可以在C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin找到。在SQL Server 2005 中使用CREATE ASSEMBLY命令或者用户界面注册一个创建的程序集“MainframeWebService.XmlSerializers.dll”
Sgen.exe /n /f MainframeWebService.dll
.NET CLR使用Transact-SQL 注册程序集。
- CREATE ASSEMBLY [MainframeWebService]
- AUTHORIZATION dbo
- FROM 'C:\MWS\bin\Release\MainframeWebService.dll'
- WITH permission_set = external access
- go
- CREATE ASSEMBLY [MainframeWebService.XmlSerializers]
- AUTHORIZATION dbo
- FROM 'C:\MWS\bin\Release\MainframeWebService.xmlserializers.dll'
- WITH permission_set = safe
- go
上面的代码完成了对开发代码的编译,产生了编译代码,然后通过CREATE FUNCTION/PROCEDURE加载了程序集到SQL Server 2005
◆.NET CLR之Productivity Tip
产生的代码会在它的父程序集之后加载。在stealth模式下是相反的,并且父程序集自动加载。要求使用CREATE语句并用ALTER ASSEMBLY … WITH VISIBILITY = ON解锁它。
使用专业工具可以让开发者达到最大的生产力。数据库部署环境也能够被转移到一个好的生产实例上,同时做到控制代码保护。数据库管理员 可以通过配置CLR技术而不会有系统稳定性方面的风险。
.NET CLR之性能检测
如果数据库管理员 安装了SQL Server 2005 ,然后开启了Windows System Monitor (PERFMON.EXE),它可能会失望的看到只有一个SQL Server CLR counter (SqlServer:CLR “CLR Execution”)给出了CPU的统计报告。
然而这是一个误导,因为在.NET CLR计算器组中存在着大量的计数器。他们在性能列表里面。他们可以根据SQL Server 服务的名字来做筛选。
◆.NET CLR之Productivity Tip
.一个服务器运行多个SQL Server 实例处理的时候,每个.NET CLR代码在列表中都不显著,这时,应该将某一个实例连接到.NET CLR,然后通过CPU的活动型来判别。
计数器有很多的设置帮助我们了解程序在SQL上运行时的健康性和活动型。
◆.NET CLR Exceptions –Exceptions/Sec 提供了一个对应用程序代码的早期警告,如果这个值比平时高(这个设置也可以用在正常的功能上),应用程序可能会失败。更深入的报告要去看错误日志。
◆.NET CLRLoading – SQL Server 使用AppDomain在数据库之间隔离代码。一个CLR 为程序提供了一个独立运行时。这个设置可以检测AppDomains和系统上加载的程序集的数量。这个值太大意味着“procedure cache”的压力过大。
◆.NET CLR Memory –提供了三种CLR内存的详细信息。这个计数器还可以检测CLR内存的使用情况,可以设置警告值。提示代码的问题,从而使代码使用较低的内存重新设计。
以上就是对.NET CLR的简单介绍。
【编辑推荐】