选择显示字体大小

专家谈sql server 2005的clr

在sql server 2005的许多被大力推荐的特性里面, 有一项可能对那些使用sqlserver 工作的编程人员最实用的是common language runtime,或者简写为clr。clr可以让编程人员直接在sql server中创建存储过程、触发器,用户自定义函数,集合体和类型。clr有很多的承诺,但是也有一些缺陷。

关于clr的重要性有一些主要的原因。首先,随着sql server 编程技术的成熟,代码编写人员陷入了sql server自身的一些限制之中,并且在很大程度上依赖外部的代码来执行一些繁重的移植。t-sql (事务处理sql)在返回数据集方面很好,但是除了这个之外则表现不佳。clr使得问题的解决有了可能,并且在sql server内部进行数据操作,而这些原本需要一个完全独立的程序来实现的。.net的操作代码和执行速度比sql server/t-sql好得多;.net中的同一位的代码可以运行更快地运行许多次,当它是二进制的,而不是作为存储过程来构建时。

使用clr的另一个巨大的好处就是安全。所有的代码都在运行前检测类型和安全权限。例如,先前没有被写入的内存是不允许被问题中的代码读取的。clr也很完善;.net框架中的每样东西都可以从存储过程、触发器或者用户函数进行访问——除了处理类似用户接口的类,它在sql server是无论如何不会有用的。

要防止clr代码胡乱运行,微软为clr代码的调用创建了一个三层的安全模型:safe, external_access 和 unsafe。safe权限集合在本质上与传统的存储过程能够做的事情一样。在sql server之外不能对其进行任何修改。external_access允许通过.net注册表和文件系统进行访问。unsafe正如其名。标记为unsafe的代码不能做任何事情,并且它实际上是不应该在调试或者实验环境之外使用的。大多数的编程人员应该永远都不需要用到高于external_access级别的任何东西。(如果你需要在存储过程或者函数的环境中与文件系统或者注册表对话,这有可能意味着你需要重新考虑你尝试的逻辑了。)

然而,clr并不是适合一切。一方面,它可能适合那些不容易、需要进行编程,在t-sql中实现的环境。许多简单的操作可以在t-sql以存储过程的方式完成,并且不需要扩展到外部进程。这意味着上下文交换和额外的事务开销,这两项中的任何一项开销都能首先抹消你使用clr获得的速度提升。clr最好用于替代扩展存储过程——例如,那些必须封闭在数据库中,但是却非常麻烦,无法用t-sql从容完成,同时又不能轻松移动到业务逻辑末尾的事情。

另一个可能的缺点就是:正如sql的领袖rod paddock在他的blog中指出的,如果你讲业务逻辑中的某个元素移动到数据库,那就可能会引起可测量性的问题。毕竟,sql server 更适合于按比例提高的单个大型机器,而不是横跨在几个比较小的机器(通常是按照业务比例来的)上。这一点指出了有选择的使用clr有多重要。t-sql简洁、有效;clr/.net昂贵并且范围广泛。正确的工作选择正确的工具,尽管拥有众多选择也不错。




 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons