SQL Server 2005中存储过程编写指导
时间:04-25
来源:TechTarget
点击:
在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代码就不难了。真正的难点在学会如何使用这门语言来优化你目前的工作,这是无法用几句话的就能说清楚的。
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代码就不难了。真正的难点在学会如何使用这门语言来优化你目前的工作,这是无法用几句话的就能说清楚的。
- 数据库系统设计全面介绍(上)(11-30)
- 数据库系统设计全面介绍(下)(11-30)
- 官方白皮书:达梦数据库的界面设计(11-30)
- 利用SQL Server数据库快照形成报表(01-01)
- 浅析SQL Server与Oracle区别(04-22)
- SQL Server块日志恢复(04-25)