解决SQL Server 2005存储过程编写问题

2008-04-02 10:36:03来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  【IT专家网独家】在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授权文章,严禁转载

查看本文国际来源


标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: SQL Server企业管理器和查询分析器

下一篇: 监测您的SQL SERVER--让瓶颈暴露