您的位置:首页 > 数据库

SQL Server CLR全功略之一---CLR介绍和配置

2009-10-25 22:04 246 查看
Microsoft SQL Server 现在具备与 Microsoft Windows .NET Framework 的公共语言运行时 (CLR) 组件集成的功能。CLR 为托管代码提供服务,例如跨语言集成、代码访问安全性、对象生存期管理以及调试和分析支持。对于 SQL Server 用户和应用程序开发人员来说,CLR 集成意味着您现在可以使用任何 .NET Framework 语言(包括 Microsoft Visual Basic .NET 和 Microsoft Visual C#)编写存储过程、触发器、用户定义类型、用户定义函数(标量函数和表值函数)以及用户定义的聚合函数。
下面列出了这一集成的其中一些主要优点:

更好的编程模型。

改进了安全和安全性。

能够定义数据类型和聚合函数。

通过标准化环境简化了开发。

具备改善性能和可扩展性的潜力。

既然CLR这么灵活,那么我们如何在T-SQL和CLR之间做出选择呢?一般情况下,我们当以T-SQL为主,在下面几种情况下,应该考虑使用CLR:
SQL中涉及大量的逻辑判断和逻辑运算。比如需要在数据库级别自定义加密算法,解密算法等。
T-SQL无法处理需求。比如需要在SQL中进行正规表达式的判断等。
逻辑判断过于复杂,需要使用大量游标进行处理。这种情况一般要进行测试,因为CLR不一定比游标快,关键是看你怎么写。



下面介绍一下如何开启CLR和两种创建CLR的方法。关于如何在VS中编写CLR程序,请看后续章节。
开启CLR。
在SQL Server2005/2008里面,CLR默认是关闭的。可以使用如下SQL语句开启CLR。
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO



创建CLR。
方法一:使用DLL文件进行创建
CREATE ASSEMBLY AssemblyName from ‘DLLPath’
例如:CREATE ASSEMBLY AssemblyName from ‘c:/hello.dll’

方法二:使用文件16进制流进行创建
CREATE ASSEMBLY AssemblyName from 文件十六进制流
例如:CREATE ASSEMBLY AssemblyName from 0x123344……
其中0x12334……是文件c:/hello.dll的十六进制流。可以使用UltraEdit等编辑器把相关dll文件的十六进制流copy出来。

相比较,方法一简单,属于外部引用,通过创建就可以知道是哪个文件。但是dll文件路径必须可以被SQLServer所访问,且部署时dll要随SQLServer变化而变化。
方法二是把流写进SQLServer中,从一定程度上屏蔽了代码。如果此dll不大的话,推荐使用方法二来创建CLR。



CLR系列文章链接:
SQL Server CLR全功略之一---CLR介绍和配置:
http://blog.csdn.net/tjvictor/archive/2009/10/25/4726933.aspx

SQL Server CLR全功略之二---CLR存储过程:
http://blog.csdn.net/tjvictor/archive/2009/10/26/4731052.aspx

SQL Server CLR全功略之三---CLR标量函数、表值函数和聚合函数(UDA):
http://blog.csdn.net/tjvictor/archive/2009/11/10/4793781.aspx

SQL Server CLR全功略之四---CLR触发器:
http://blog.csdn.net/tjvictor/archive/2009/11/10/4795569.aspx

SQL Server CLR全功略之五---CLR自定义数据类型

http://blog.csdn.net/tjvictor/archive/2009/11/13/4807901.aspx



如需转载,请注明本文原创自CSDN TJVictor专栏:http://blog.csdn.net/tjvictor

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: