SQL Server 2005 CLR 功能简介

  在SQL Server 2005的众多被高度评价的特性中,有一个最适合那些对SQL Server编程的人员的就是通用语言运行时,缩写为CLR(Common Language Runtime)。CLR允许编程人员直接在SQL Server 中创建存储过程,触发器,用户定义函数,集合和类型。CLR有很多的承诺,但是它也具有一些缺陷。

  CLR的重要性有几个比较大的原因。首先,由于SQL Server编程已经成熟了,编码器运行在SQL Server 自身可能的限制之中,并且很大程度上依赖于外部代码来执行一些繁重的操作。T-SQL (Transact-SQL)在返回数据集合方面非常好,但是在其他方面就不是很好了。CLR使得解决问题和缩减SQL Server内部的数据复制成为可能,通过在SQL Server中需要完全地分离程序来努力实现。.NET操纵代码以及执行速度方面比SQL Server和T-SQL 强得多;.NET中同样位置的代码由于是二进制,因此其运行多次仍然比构建为存储过程快上许多。

  使用CLR的另一个巨大的好处就是:安全。所有的代码都是在运行之前检测类型和许可安全的。例如,先前没有被写入的内存是不会被请求中的代码访问的。CLR还非常的完善;.NET框架中的素有的东西都可以在存储过程、触发器或者用户函数中进行访问——除了处理类似用户界面的类,这些类在SQL Server中没有用处。

  为了避免CLR的疯狂运行,微软创建了一个三层的安全模型,规定了CLR代码是如何调用的:安全、外部访问和不安全(SAFE, EXTERNAL_ACCESS and UNSAFE)。安全权限设置与传统的可以执行的存储过程一样重要。它不可以被SQL Server自身之外的任何东西修改。外部访问允许通过.NET来访问注册表和文件系统。不安全的命名很恰当。被标记为不安全的代码不能做任何事情,并且他们实际上在调试或者试验环境之外无法使用。大多数的编程人员都不需要使用高于外部访问的东西。(如果你需要在存储过程或者函数的环境内访问文件系统或者注册表,那么很有可能标记着你需要重新考虑你正在做的事情的逻辑了。)

  然而,CLR并不适合所有的东西。有一件事,它可能最适合那些不轻松、需要编程的、在T-SQL 中实现的环境。许多简单的操作可以作为T-SQL中的存储过程完成,并不需要做成外部处理。这意味着上下文替换和额外的事务负担,这两项中的每一项都会抵消你使用CLR带来的最主要的速度的提升。CLR用于替换扩展存储过程是最好的——例如,那些与数据库关系密切,但是T-SQL 处理起来过于繁琐的,并且很难轻松地移动到事物的业务逻辑端的。

  还有一个可能的不利是:正如SQL 的领袖Rod Paddock 在他的blog里面指出的,如果你将业务逻辑的某个部分移动到更接近数据库,那么有可能引起可测量性的问题。不管怎么说,SQL Server都更适合按比例扩大地放在单个的大型机上,而不是分布在多个较小的机器上(这通常是业务逻辑的测量方式S)。以上指出了有选择地使用CLR是多么的重要。T-SQL 非常紧凑并且有效率;CLR/.NET 具有扩展性和包容性。正确的工作是采用正确的工具,虽然拥有很多的选择是多么好的一件事情。

时间: 2024-12-27 11:46:49

SQL Server 2005 CLR 功能简介的相关文章

SQL Server 2005新功能-TSQL

server SQL Server 2005相对于SQL Server 2000改进很大,有些还是非常实用的. 举几个例子来简单说明 这些例子我引用了Northwind库. 1. TOP 表达式 SQL Server 2000的TOP是个固定值,是不是觉得不爽,现在改进了. --前n名的订单declare @n int  set @n = 10  select TOP(@n) * from Orders 2. 分页 不知各位过去用SQL Server 2000是怎么分页的,大多都用到了临时表.S

SQL Server 2005数据库镜像简介

数据库镜像是SQL Server 2005的一个新特性,它允许你将一个SQL Server中的数据库内容镜像到另一个SQL Server上.它还让你可以在发生错误的时候,通过镜像数据库来进行错误恢复. 自从SQL Server 2000以来,你已经能够通过使用复制来创建一个备用的服务器.传输日志,以及备份和重新存储了--但是现在微软又引入了一个内建的工具,它可以实现自动的错误恢复.数据库镜像是SQL Server 2005的一个新特性,它允许你将一个SQL Server中的数据库内容镜像到另一个

有关SQL Server 2005 CLR

在SQL Server 2005的许多被大力推荐的特性里面,有一项可能对那些使用SQLServer 工作的编程人员最实用的是Common Language Runtime,或者简写为CLR.CLR可以让编程人员直接在SQL Server中创建存储过程.触发器,用户自定义函数,集合体和类型.CLR有很多的承诺,但是也有一些缺陷. 关于CLR的重要性有一些主要的原因.首先,随着SQL Server 编程技术的成熟,代码编写人员陷入了SQL Server自身的一些限制之中,并且在很大程度上依赖外部的代

SQL Server 2005新功能

server  举几个例子来简单说明 这些例子我引用了Northwind库. 1. TOP 表达式 SQL Server 2000的TOP是个固定值,是不是觉得不爽,现在改进了.  --前n名的订单declare @n int  set @n = 10  select TOP(@n) * from Orders 2. 分页 不知各位过去用SQL Server 2000是怎么分页的,大多都用到了临时表.SQL Server 2005一句话就支持分页,性能据说也非常不错. --按Freight从小到

专家谈SQL Server 2005 CLR

在SQL Server 2005的许多被大力推荐的特性里面,有一项可能对那些使用SQLServer 工作的编程人员最实用的是Common Language Runtime,或者简写为CLR.CLR可以让编程人员直接在SQL Server中创建存储过程.触发器,用户自定义函数,集合体和类型.CLR有很多的承诺,但是也有一些缺陷. 关于CLR的重要性有一些主要的原因.首先,随着SQL Server 编程技术的成熟,代码编写人员陷入了SQL Server自身的一些限制之中,并且在很大程度上依赖外部的代

怎样从SQL Server 2005 CLR存储过程返回结果集

问题 我们有时会遇到关于CLR函数或存储过程的需求.例如我们可能需要调用一个存储过程来获得某一特定文件夹下的文件列表.我们怎样使用CLR将文件列表作为一个标准结果集(例如行和列)返回呢? 专家解答 SQL Server 2005和之后的版本集成了CLR(通用语言运行时),它使得我们可以使用Microsoft .NET代码编写存储过程.触发器.用户友好的函数.用户友好的聚合和用户友好的类型;例如Visual Basic .NET或C#.被增强的各种T-SQL CREATE命令使得我们可以定义一个数

SQL Server 2005生成直方图简介

直方图是一种统计报告,它可以显示在某个最小值和最大值之间的值的等级或范围内值出现的频率.让我们以学生的考试成绩结果为例来进行说明.假定有 30 个学生参加考试,最低分为 51,最高分为 100.您希望在最低分和最高分之间生成若干个等级,并计算每个等级内的结果数目,从而了解整个班级的分数分布情况.如果您希望生成五个范围大小相似的连续等级,则可得到如下的等级和范围:50 到 60.60 到 70.70 到 80.80 到 90.90 到 100(下限不包括在内,但包括上限).该直方图包括各个等级以及

使用 SQL Server 2005中的 CLR 集成

本文描述了数据库应用程序开发人员和架构师如何利用 SQL Server 2005 中的 CLR 集成功能.本文对基于 CLR 的编程方式与 SQL Server 中支持的现有编程模型(如 TransacT-SQL 和扩展存储过程)进行了比较,并且强调了各自相对的优缺点.还提供了一组选择合适的编程替代方法的高级指导,以及一些示例和代码示例. 一.简介 Microsoft 通过宿主 Microsoft .NET Framework 2.0 公共语言运行库 (CLR),SQL Server 2005显

SQL Server 2005高可用性之镜像功能

SQL Server 2005相对于SQL Server 2000来说,无论是性能还是功能都有一个相当大的提高,甚至可以用"革命"来形容这一次升级.SQL Server 2005使 SQL Server 跻身于企业级数据库行列.在数据高可用性方面,SQL Server 2005为用户提供了数据镜像.复制.故障转移群集.日志传送功能.本文向读者简单介结SQL Server 2005镜像功能. 一.镜像简介 数据库镜像是一个高可用性软件解决方案,为客户端提供小于10秒故障转移.每个数据库镜