MSSQL网页设计编写实行你的第一个Yukon CLR(通用言语...
支持多线程,充分利用CPU资源存储历程|实行编写实行你的第一个YukonCLR(通用言语运转时)存储历程SuhilSrinivas
翻译:朱二
原文出处:http://www.c-sharpcorner.com/Longhorn/Yukon/First-CLR-Procedure.asp
形貌
这篇文章形貌了各种编写和实行一个YukonCLR通用言语运转时存储历程的步骤。对开辟夹杂数据范例的SQL存储历程来讲,本文也是一个出发点。需求准确安装SQLServerYukonbeta1先容Yukon是微软公司的SQLServer最新版本,它的最主要特征之一是它和.NET集成性。更多关于Yukon的信息,请拜见YukonFAQ。一个利用.NET兼容言语编写的SQLServer工具被称为一个.NET例程。一个.NET例程能够是以下范例1.存储历程?2.用户界说标量值型函数?3.用户界说函数值型函数?4.用户界说触发器一个.NET存储历程和初期SQL存储历程在利用上没有区分。在SQLServer的初期版本中,存储历程是一批或多批T-SQL语句。一个.NET存储历程可由T-SQL和.NET兼容言语夹杂构成。编写你的第一个.NET例程包括以下步骤(基于本文目标,我利用C#作为.NET开辟言语):1.创建一个类并援用System.Data.SqlServer和System.Data.Sql2.在公然办法里完成营业逻辑3.利用命令行工具大概VisualStudio.NET编译这个C#程序4.利用数据库注册这个C#程序集5.利用数据库注册该.NET例程6.利用该.NET例程基于本文目标,我们开辟一个存储历程作为我们第一个.NET例程.你可使用VisualStudio.Net大概你喜好的文本编纂器来编写这个C#程序。程序代码以下,并假定数据库里有一个product表。usingSystem.Data.Sql;usingSystem.Data.SqlServer;//////Thisismyfirst.NETroutine.///publicclassMyNETRoutines{?publicstaticvoidFirstProc(){?SqlPipemyPipe=SqlContext.GetPipe();myPipe.Send("HelloWorld");SqlCommandcmd=SqlContext.GetCommand();cmd.CommandText="select*fromproduct";myPipe.Send(cmd.ExecuteReader());}}上面让我逐行注释下面的代码。开辟.NET例程所需全体类都是System.Data.SqlServer和System.Data.Sql定名空间下。这些定名空间包含的类好比Sqlcontext,可用来会见SQLServer。不象ADO.NET那样你必要一个毗连和毗连字符串。由于程序集被加载到数据库中,其实不必要显现创建一个毗连。一个.NET例程可使用In-ProcessManagedProvider来会见SQLServer资本。下面说起的定名空间包括了In-ProcessManagedProvider的完成。在本文中我们把核心会合在两个类:SqlContextandSqlPipe。一个SqlContext类包括的办法能够获得一个数据库实例毗连、命令等。SqlPipe用户完成发送查询了局和动静到客户端,和ADO.NET内里的Response类有良多类似的地方。SqlPipe.Send()有四种重载情势,此办法用来和客户端通讯,重载的办法以下:1.SqlPipe.Send(stringmeg)2.SqlPipe.Send(SqlErrorse)3.SqlPipe.Send(ISqlRecordrecord)4.SqlPipe.Send(ISqlReaderreader)你能够发送一个messge、reader,error大概record到客户端程序。Send(string)和send(reader)分歧点是:在SQLServer的事情区,message发送到动静窗格,reader发送到results窗格。在Yukonbeta中,System.Data.SqlServer定名空间地点的程序叫是SqlAccess.dll,可在命令提醒符下利用以下命令编译下面的代码:csc.exe/t:library/r:"
qlaccess.dll"/out:MyNETRoutines.dllMyNETRoutines.cs?一旦该程序被天生,程序集MyNETRoutines.dll包括此存储历程,以下代码用来实行此存储历程。USEAdventureWorksCREATEASSEMBLYtestfromC:YukonProjectsMyNETRoutines.dllgocreateprocedureFirstProcasEXTERNALNAMEMyNETRoutines:MyNETRoutines::FirstProcgoexecFirstProc
?图一和图二是实行的了局
图一
图二
总结.NET运转时与数据库引擎的集成为开辟职员利用.NET基类库开辟庞大的营业逻辑供应了很多天真性。可是必需意想到利用运转时的利和弊。因而,在决意利用T-SQL或.NET兼容言语完成营业逻辑之前,须举行充实的思索。--------------------------作者先容 SuhilSrinivas是一名履历丰厚的开辟者,他利用各类Microsoft手艺举行开辟。Suhil是一名MCP,他很热情的引导和匡助老手。在构建基于Web、无线收集和背景体系方面有着丰厚的履历,而且他一向为各类企业做征询事情,出格的是Suhil一向处置于信誉卡和付出处置行业。别的,他仍是EduwareKnowledgeSystems(EKS)的懂事长。? 作为一家公司,EKS具有几款合用于任何范围的教导机构的产物。个中一次要产物是School-ERP体系,此产物完整改动了教导机构一样平常办理形式。其他产物中,也有一些合用于小型和中型的医疗服务供应机构。EKS也供应征询服务并经由过程在印度Bangalore的做事处为外洋客户供应开辟服务。MySQL的海豚标志的名字叫“sakila”,它是由MySQLAB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者AmbroseTwebaze提供。 还不是性能有问题!否则面向对象的数据库早就实现了!建议使用CLR的地方一般是和应用的复杂程度或操作系统环境有很高的耦合度的场景。如你想构建复杂的算法,并且用到了大量的指针和高级数据模型。 我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过! 而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。 从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。 你可以简单地认为适合的就是好,不适合就是不好。 代替了原来VB式的错误判断。比Oracle高级不少。 始终遗憾SQLServer的登陆无法分配CPU/内存占用等指标数。如果你的SQLServer给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进行连接查询,会给你的系统带来很大的负担。 从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。
页:
[1]