开发CLR数据库对象:CLR架构

日期: 2009-09-28 作者:McGraw-Hill翻译:冯昀晖 来源:TechTarget中国 英文

.NET Framework CLR与SQL Server 2005数据库引擎集成的非常紧密。实际上,SQL Server 数据库引擎是以CLR为基础宿主的。与同DB2和Oracle与.NET的集成相比,这一紧密的集成使得SQL Server 2005具备了与.NET集成的几个明显的优势。在下图3-1中,你可以看到SQL Server 2005数据库引擎和CLR集成的概要介绍。

  如图3-1所示,你可以看到,CLR是SQL Server数据库引擎内的宿主在SQL Server数据库引擎内的。SQL Server数据库使用专用API或者宿主层与CLR交互,使Windows操作系统与CLR相连接……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

.NET Framework CLR与SQL Server 2005数据库引擎集成的非常紧密。实际上,SQL Server 数据库引擎是以CLR为基础宿主的。与同DB2和Oracle与.NET的集成相比,这一紧密的集成使得SQL Server 2005具备了与.NET集成的几个明显的优势。在下图3-1中,你可以看到SQL Server 2005数据库引擎和CLR集成的概要介绍。

  如图3-1所示,你可以看到,CLR是SQL Server数据库引擎内的宿主在SQL Server数据库引擎内的。SQL Server数据库使用专用API或者宿主层与CLR交互,使Windows操作系统与CLR相连接。CLR宿主在SQL Server数据库内使得SQL Server数据库引擎可以控制CLR的几个重要方面,其中包括:

  内存管理

  线程

  垃圾回收

  DB2和Oracle的实现都使用CLR作为外部进程,这意味着CLR和数据库引擎都会竞争系统资源。SQL Server 2005进程内宿主CLR给Oracle或者DB2使用的外部实现提供了几个重要的优势。首先,进程中宿主使得SQL Server可以控制CLR的执行,使得像内存管理,垃圾回收和线程管理这些重要的功能都在SQL Server 数据库引擎的控制之下。在外部实现中,CLR将独立地管理这些功能。数据库引擎对系统需求整体上有一个更好的效果,可以比CLR本身能更好地管理内存和线程。最后,进程中宿主CLR将提供更好的性能和可扩展性。

  图 3-1: SQL Server CLR数据库架构

  启用CLR支持功能

  默认状态下,SQL Server数据库引擎中的CLR支持功能是处于关闭状态的。这是为了确保SQL Server的更新安装不会在管理员没有明确参与的情况下无意中启用新功能。要启用SQL Server的CLR支持,你需要使用SQL Server sp_configure系统存储过程的高级选项,请看下面的列表:

  sp_configure 'show advanced options', 1
  GO
  RECONFIGURE
  GO
  sp_configure 'clr enabled', 1
  GO
  RECONFIGURE
  GO

  CLR数据库对象组件

  要创建.NET 数据库对象,你要从编写管理代码开始,可以用任何一种.NET语言,比如VB,C#或者Managed C++,然后把代码编译成.NET的DLL(动态链接库)。最常见的实现方式就是使用Visual Studio 2005创建一个新的SQL Server项目,然后执行编译构建生成DLL。当然,你也可以使用你自己喜欢的编辑器编写.NET代码,然后使用.NET Framework SDK把代码编译成.NET动态库。ADO.NET是连接CLR动态库和SQL Server数据库的中间件。一旦.NET动态库创建好以后,你需要把该动态库注册到SQL Server,创建一个新的SQL Server数据库对象叫做程序集(assembly)。程序集本质上就是把.NET动态库封装了一下。然后你可以创建一个新的数据库对象(比如存储过程或者触发器)指向SQL Server程序集。在图3-2中,你可以看到创建CLR数据库对象的大致过程。

  图 3-2: 创建CLR数据库对象

相关推荐