DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 988|回复: 0
打印 上一主题 下一主题

[待整理] SQL Server 2005中存储过程编写指导

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-13 15:31:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在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代码就不难了。真正的难点在学会如何使用这门语言来优化你目前的工作,这是无法用几句话的就能说清楚的。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-15 00:21 , 耗时 0.091739 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表