本文让我们谈谈关于这种编写存储过程的新方法的五个常见问题。它们值得你一读的……
在SQL Server 2000中,只有一种方法编写存储过程:使用T-SQL语句。学习以前版本的SQL Server中存储过程的编写是一门课程。但是SQL Server 2005让你使用.NET语言家族(主要是VB.NET和C#)来编写存储过程(以及函数、触发器和其他的一些东西)成为可能。
1. 我为什么要使用CLR模型来写存储过程?
主要是因为数据。SQL CLR在一些方面执行较快:其中,字符串处理要比T-SQL中快很多,并且它还有很多健壮的方法处理错误。还有,假如存储过程必须和数据库之外的东西(文件系统或者Web Service)进行交互,那么使用CLR SP更好,因为使用CLR处理这些事情更加方便。
2. 什么类型的存储过程从CLR中获益最大?
通常,执行繁重的数据计算任务的SP会比只是将数据抽取出来的SP更能从CLR中受益。如果你编写了一个仅仅对复杂select语句进行包装的CLR SP,那么你可能看不到明显的性能提升,因为在CLR SP中SQL语句在SP每次执行的时候会被验证一次。事实上,这样的CLR SP会比select作为T-SQL SP性能更糟糕。
一条好的经验法则应该是这样:假如出问题的SQL只有几行,那么将SQL保持为传统的SP。假如你采用CLR的方式来操作大的数据集,那么你可以使用传统的SP获得这个大的数据集,而在CLR SP中调用这个传统的SP。这样,这个传统的SP是预先编译的而获得加速,而数据转换可以在有利于数据处理的CLR SP中完成。
注意:这里假设你想要在数据层而不是在表示层来执行这些精细的数据转换。理想情况下,在开始编写代码之前,你需要做出一些这样的决定。
3. 我是否应该将我已有的存储过程转换到CLR模型?
简单的答案是“是否这样做会产生实际的好处。”一种检验是否满足这一标准的方法是编写和某个已有存储过程对等的CLR实现,并且使用实际数据来对这两个实现进行测试。留下老的存储过程,除非你可以确信新的CLR实现满足:(a)按照计划执行;(b)提供了性能好处。CLR和其他的东西一样,不是灵丹妙药。
4. 是否可以不使用开发IDE就能编写Common Language Runtime的存储过程?
是的,你可以使用C#编译器就可以做到。但是使用Visual Studio或者类似的IDE可能让事情容易一些,尤其在你为一个企业完成转换或者实现一整套SP的情况下。
5. 让它自动完成这种转换很难吗?
明显,你需要VB.NET、C#其中一种语言的使用经验。真正的SQL命令是包裹在CLR代码中的,因此一旦你精通了使用方法,那么在CLR重新编写已有的T-SQL代码就不难了。真正的难点在学会如何使用这门语言来优化你目前的工作,这是无法用几句话的就能说清楚的。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
TT百科:存储过程
存储的过程可以访问或修改数据库中的数据,但并不绑定到特定的数据库或对象,这提供了许多优点。
-
SQL Server 2005支持服务结束 升级何去何从
SQL Server 2005的支持就要结束了,就在2016年4月12日,SQL Server 2005的客户们应该升级了。
-
SQL Server 2005即将终止服务 你准备好了么?
2016年4月12日,微软将正式终止SQL Server 2005相关服务。微软正在终止扩展支持,这意味着不再有新特性更新,什么都没了。
-
解决SQL服务器提示属性IsLocked不可用于登录用户的错误
在SQL Server中,权限的分配很重要。特别是在用户数量众多的数据库里面,用户权限,架构的划分经常会导致权限之间的冲突,导致无法登陆。