文本版|topic 高级搜索
   名人堂 帮助 论坛制度 意见反馈 | 首页 博客 周新贴 专题 求职 读书
RSS 底部
 
社区导航: 专家门诊   网络技术   操作系统   数据库   程序设计   系统应用   考试认证   CIO及信息化   站长交流   综合交流   下载基地  51CTO产品服务 设为首页 | 收藏本站
51CTO技术论坛» 微软SQL Server专区 » 微软商务智能 » 对于Visual Studio和.NET开发者SQL Server 2005和IBM DB2 v8.2两个数据库平台的比较       [ 打印]  [ 订阅]  [ 收藏]  [ 推荐给朋友]   [ 本帖文本页]

论坛跳转:
     
标题: 对于Visual Studio和.NET开发者SQL Server 2005和IBM DB2 v8.2两个数据库平台的比较  ( 查看:456  回复:3 )   
  本主题由 xiaoxinlucky 于 2008-1-18 21:48 解除精华  
 
xiaoxinlucky
助理工程师  点击可查看详细


十二生肖之鼠   双子座   行业勋章   技术勋章   诚信兄弟  
帖子 603
精华 12
无忧币 2017
积分 1392
阅读权限 40
来自 (保密)
注册日期 2007-12-12
最后登录 2008-6-21 离线

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2008-1-8 16:45   标题:对于Visual Studio和.NET开发者SQL Server 2005和IBM DB2 v8.2两个数据库平台的比较
上一帖 |
目录

摘要
论文结果摘要
简介
核心技术的比较
数据提供程序
.NET Framework集成
宿主模式的实现
.NET 2.0和.NET 1.1的区别
在SQL Server中部署.NET逻辑
在SQL Server中保护程序集
在DB2中部署.NET 逻辑
Visual Studio和SQL Server 2005的集成
Visual Studio与DB2 UDB 8.2集成
可管理性和性能
技术浏览
SQL Server 2005 CLR存储过程的描述
用SQL Server和Visual Studio 2005创建存储过程
开发步骤总结
工具集成
DB2 CLR存储过程的描述
用DB2和Visual Studio 2005创建存储过程
开发步骤总结
工具集成
开发人员体验的对比汇总
关系型数据库以外
HTTP 终端
Service Broker
Notification Services
Reporting Services
Integration Services
Analysis Services
Mobile Edition
结论
关于作者

摘要
这篇论文从Visual Studio 2005开发者的角度比较和对照SQL Server 2005和DB2 UDB v8.2。本文比较了SQL Server 2005和DB2 UDB 8.2都使用的核心技术,比如集成.NET Framework,支持语言和其它增强,以及性能和可管理性。之后本文介绍了用SQL Server 2005来建立、调试和部署一个存储过程的必要的步骤。这些步骤和相应的在DB2中的步骤相比较。这篇文章的目标读者应当是架构师,开发人员和技术决策者。

论文结果摘要
这篇论文显示了在创建数据库应用程序时,SQL Server 2005(代码名”Yukon”)和Visual Studio的结合,相比于DB2 UDB 8.2(代码名”Stinger”)与Visual Studio的结合,能够获得更大的优势。这种优势可以使在企业在开发,调试,和部署数据库解决方案时,节省大量的时间和金钱。特别的,论文论证了SQL Server 2005相比于DB2 UDB 8.2,能够支持更多的.NET数据库对象。另外,对于建立和管理数据库对象,SQL Server 2005和Visual Studio的结合,比DB2 UDB 8.2和Visual Studio的结合,提供了更深层次的集成。论文同样论证了,处理关系型数据库开发的能力,SQL Server 2005给应用程序提供了一个扩展的开发平台,这也超过了DB2 UDB 8.2所提供的能力。

简介
过去,IT开发可能由一些专利知识的孤岛组成,比如应用程序开发语言,生产环境,和数据操作测试。在这些技术之间建立连接通常需要专门的技术并需要大量的劳动力。今天,有了SQL Server 2005和Visual Studio 2005,我们看到了一个统一的开发环境,其中包含了广阔范围的编程模型,从基于客户端的数据库应用程序和服务器管理功能,到服务器端的数据库对象的创建。开发人员和客户同样会获益于增强的工具和framework的功能,这些都会转化为应用程序的可用性,性能,安全性,和可伸缩性上的全面的增长。

在SQL Server 2005和DB2 UDB 8.2中,都使Visual Studio环境和数据库的数据提供程序集成到一起,并加快了应用程序开发的进程。无论在开发阶段还是在应用程序的管理阶段,它们的这些建造和部署应用程序的工具,都会提高生产效率,并带来更好的性能。SQL Server 2005或DB2 UDB 8.2与Visual Studio的集成,都能够带来一个更加有效率更加灵活的数据库应用程序解决方案的开发环境,并能生产出更高性能,更稳定的数据库解决方案,它比以往的版本具有更好的可管理性和可伸缩性。利用与.NET集成的优势,数据库开发人员能够执行那些只用SQL代码无法完成的工作。使用.NET Framework,开发人员可以写一些代码,其逻辑更加复杂,更适合问题的求解,并能够访问外部的系统和网络资源。.NET语言,像Visual Basic,C#和C++,都是面向对象语言,拥有封装,继承,多态等特性。它们同样还提供了一些SQL中不支持的功能,比如支持数组,结构化异常处理,和集合。

Microsoft .NET为建立和集成数据库应用程序提供了先进的高效的环境。在这篇论文中,我们将比较SQL Server 2005和DB2 UDB 8.2提供的不同级别的.NET集成。为了更好的说明不同产品的集成功能的精确特性,我们提供了一个详细的技术浏览,展示了使用SQL Server 2005和DB2 UDB 8.2与Visual Studio来创建一个实例.NET存储过程的精确步骤。

核心技术的比较
虽然SQL Server 2005和DB2 UDB 8.2都提供了和.NET Framework和Visual Studio集成的功能,但是它们在各自不同的集成级别上有很大的差别。下表显示了两个数据库平台相关的.NET集成级别的主要点的比较。



数据提供程序
SQL Server 2005和DB2 UDB 8.2均提供了.NET数据提供程序,可以使.NET客户端应用程序访问数据库平台。与基于OLE DB的提供程序相比,这里的”native”提供程序为服务器应用程序提供了更高的性能和更好的可伸缩性。这两个提供程序的功能十分相似。它们都实现了基本的ADO.NET Connection,Command,DataReader,DataSet和DataAdapter对象。一个重要的区别是:SQL Server .NET数据提供程序有两种可用的模式,一种是客户端模式一种是服务器端模式。这对于服务器端的开发尤其重要,因为SQL Server 服务器端.NET数据提供程序是一个共享内存的提供程序,并且不会通过网络,客户端提供程序才通过网络访问数据库。另外,单独的服务器端的提供程序提供了诸如服务器端游标的功能,这只能在基于服务器的代码里可用。客户端应用程序的提供程序是通过System.Data.SqlClient命名空间来访问的,而服务器端的.NET数据提供程序是通过System.Data.Sqlserver命名空间来访问的。对于DB2 UDB 8.2来说,只有一个IBM.Data.DB2命名空间。DB2 UDB 8.2 .NET数据提供程序使用DB2Context对象来创建到数据库的共享内存方式的连接。

在服务器端,也有一些相似之处。DB2和SQL Server都支持用.NET语言来创建和部署应用程序。除了这个基本的概念以外,两个数据库平台的.NET集成级别区别很大。DB2 UDB 8.2支持.NET存储过程和用户定义函数的创建。但是,在Visual Studio IDE中只支持DB2 UDB 8.2 .NET存储过程的创建,而用户定义函数必须手动创建。相反,SQL Server 2005提供了更多的.NET支持,SQL Server支持.NET存储过程和用户定义函数的创建。不仅如此,SQL Server还支持在触发器,用户定义类型(UDT’s),和用户定义聚合中使用.NET。用.NET语言创建存储过程和函数的功能,是数据库开发人员能够实现超越标准的SQL功能的业务逻辑和函数。当然这是.NET与数据库交互的关键,但是,用.NET语言创建触发器,用户定义类型,和聚和的功能也同样重要。用.NET创建触发器,使触发器的代码能够充分的封装业务逻辑,并能够执行附加的操作,不如访问外部的资源来记录操作。创建用户定义类型的能力使得数据库开发人员扩展了原来系统提供的数据类型。通过.NET定义UDT’s可以包含属性和运算符,这时开发人员无缝的扩展了服务器提供的数据类型。使用这些UDT和原有的数据类型没有什么区别,也可以拥有他们自己的自定义运算符和聚和。相似的,支持用户定义聚合的能力使开发人员创建自定义的聚合运算符,它可以被原有的数据类型或用户定义类型使用。

除了这些.NET的基本特性之外,继承.NET Framework与这两个数据库服务器还有其它的重要的区别。下一小节将更加深入的讨论与.NET集成的细节问题。

NET Framework集成
Microsoft® .NET是用来连接信息,人,系统和设备的Microsoft的软件技术的集合。.NET Framework是一套用来创建和运行下一代软件应用和Web service的完整的Windows组建。
.NET Framework:
        支持超过20种不同的编程语言。
        控制开发软件时的大多数流程,是开发人员集中在核心业务逻辑的代码上。
        使创建,部署,和管理安全,强壮,高性能的应用程序比以往更加简单。
.NET Framework有公共语言运行时和一个统一的分级的类库集合组成。.NET CLR的职责包括对语言集成,安全执行,和内存管理,进程和线程等的运行时的服务。在语言集成的范围内,CLR定义了一个公共类型系统(CTS),它描述了所有.NET语言所用到的基本类型,和关于这些类型的操作。.NET Framework提供了一个可扩展的类集合,开发人员可以加入他们的应用程序,可覆盖的范围包括I/O,networking,text processing,data access,encryption,XML processing,Web services等等。这使得开发人员集中于构建业务逻辑。.NET CLR和SQL Server 2005和DB2 UDB 8.2的集成,使得可以使用.NET语言(包括C#,Visual Basic,C++,和J#)来进行数据库对象的开发。

两个不同的平台与.NET Framework集成的方式非常不同。SQL Server 2005数据库引擎以“in- process”模式加载CLR。这意味着只有一个操作系统进程,来运行数据库引擎和.NET运行时。相反,DB2 UDB 8.2以“out-of- process”模式集成.NET。在图1中,描述了不同数据库CLR的实现方式。


图表 1 数据库的.NET集成

宿主模式的实现
对于.NET运行时来说,SQL Server 2005提供的in-process模式比out-of-process模式提供了更多的明显的优势。首先,in-process方式允许SQL Server以各种方式控制CLR的执行。其中重要的功能,如内存管理,垃圾回收,和线程支持都在SQL Server的控制之下,而不是用.NET的默认的设定和行为。这一点非常重要,因为SQL Server数据库引擎对于系统需求有着更好的整体上的观察,这样将优化内存和线程的管理。最终,CLR以in-process寄宿在SQL Server 2005种,获得了更强壮和可伸缩的方案。

例如,考虑一个负荷很重的数据库实例,在很长一段时间内对许多并发查询做出相应。SQL Server能够自动的智能的相对于程序逻辑(例如.NET存储过程),对数据存储平衡内存分配。当系统上的负荷发生性质上的改变时-例如,相对更多的查询利用更多的应用程序逻辑-SQL Server会自动重新调整平衡。系统的性能不断的优化,并带来了真实世界的可伸缩性和稳定性。因为.NET运行时是以”out of process”的方式寄宿在DB2中的,所以DB2并不能提供这种类型的优化和机器资源的动态平衡。

SQL Server 2005用的CLR宿主API只能在.NET Framework 2.0种执行这种动态优化,而在以前的版本中不可用。所以,SQL Server 2005需要.NET Framework 2.0,而DB2可以集成.NET Framework 1.1。

.NET 2.0和.NET 1.1的区别
使用.NET Framework 2.0提供了SQL Server 2005和Visual Studio 2005的结合,提供比DB2 UDB 8.2用的.NET Framework 1.1更多的优势。.NET Framework 2.0有很多重大的增强,包括:改良的性能和加载时间
支持Generics(能够一致的处理不同类型的值的类或方法,因此提高代码重用)
Edit-and-Continue支持在执行期间的改变,并无需完全编译
新的DPAPI允许应用程序加密敏感信息如连接字符串甚至是存储块
Authenticated Stream的功能用新的NegotiateStream和SslStream类保护客户端和服务器之间发送的信息
当调用COM对象时,COM互操作的改进给了.NET应用程序更好的性能和更强的可靠性
增强的I/O支持增加了对GZIP数据压缩的支持
64位应用程序的兼容性

在SQL Server中部署.NET逻辑
每个数据库平台使用.NET对象的方式也很有区别。对于SQL Server 2005,出现了一个新的SQL Server数据库对象叫做程序集,它是部署.NET对象的基本单位,比如部署触发器或存储过程。程序集是部署.NET逻辑的一个单位。要创建CLR数据库对象,您必须先用Visual Studio 2005创建一个DLL。然后将这个DLL作为一个数据库程序集对象导入到SQL Server中。这些步骤可以使用命令行编译器和CREATE ASSEMBLY命令手动的执行,或者像技术浏览小节中那样,Visual Studio 2005可以自动完成整个过程。

在SQL Server中保护程序集
对于SQL Server 2005,数据库程序集为数据库管理员提供了一套新的安全系统。程序集可以被标志为以下三种安全类型:SAFE,EXTERNAL或UNSAFE。这些安全指派使得数据库管理员能够控制和保护所有依存数据库运行的.NET代码。SAFE指派表示程序集只用托管代码,并且不访问数据库以外的资源。EXTERNAL指派用来使托管代码访问数据库资源以外的资源,比如文件系统或网络。UNSAFE应用于包含托管和/或非托管代码的车队程序集,并可以访问任何内部或外部的资源。用UNSAFE程序集创建的数据库对象只能由有系统管理员权限的用户来执行。

在DB2中部署.NET 逻辑
虽然合并.NET托管代码到DB2 UDB 8.2中的过程和到SQL Server 2005中的过程很相似,但是在数据库对象类型和位置上有很大的不同,同样,安全和数据库的管理过程也有很大的不同。为了在DB2中创建CLR数据库对象,您首先应该在Visual Studio中用.NET托管语言创建一个DLL。这个DLL文件必须拷贝到一个指定的DB2的安装路径文件夹中,或者在创建存储过程或函数时给出DLL路径的全名。这个DLL不是不是一个数据库对象或被引入数据库表中。取而代之,它是一个操作系统中的文件。之后,在创建数据库对象时,比如创建存储过程或函数,这个DLL会被用作CREATE命令的一部分。您将会看到详细的实现过程,Visual Studio 2003可以为DB2自动创建一个CLR存储过程,但是用户定义函数不同。您将手动执行创建用户定义函数的过程。

数据库管理员或应用程序开发人员可以通过在运行时限制程序的动作,来保护与DB2外部程序相关的DLL程序集。创建存储过程活函数时,可以通过在CREATE语句后使用EXECUTION CONTROL从句来实现。有效的执行控制模式为:SAFE,FILEREAD,FILEWRITE,NETWORK,和UNSAFE。如果没有制定执行控制模式,那么默认的模式为SAFE,也就是CLR程序只能访问数据库管理器控制的资源。这些资源包括数据库实例管理的所有的表和架构。FILEREAD,FILEWRITE,和NETWORK执行模式允许托管代码访问本地文件系统或网络中的资源。UNSAFE执行模式对资源访问没有限制,并且UNSAFE执行模式的程序能够执行二进制代码。既然DB2的.NET集成使用的”out-of-process”方式,DB2 CLR存储过程和函数也必须在它们的CREATE语句中使用FENCED从句,以指定.NET逻辑运行在与数据库管理器不同的进程中,而且不使用共享内存来通信。当在程序逻辑和数据库之间传输数据时,相比于in-process模式,这将导致性能下降。

Visual Studio和SQL Server 2005的集成
Visual Studio 2005和SQL Server 2005提供了所有Microsoft开发环境中与数据库平台的最高级别的集成。SQL Server 2005和Visual Studio 2005为数据库和开发工具提供了空前的集成。Visual Studio 2005提供了许多数据库方面的特殊功能,可以用来开发SQL Server解决方案。其中一些功能,如Server Explorer,可以用来为客户端和服务器端的数据库开发项目。其它的,像SQL Server 项目模版和CLR 项模版,只能用来开发SQL Server 服务器端的程序。图2说明了Visual Studio 2005中许多数据库集成功能。



图 2  SQL Server 2005和Visual Studio
        Server Explorer. Server Explorer允许开发人员浏览和与服务器端的资源进行交互,比如队列,数据库,活动目录等等。特别是SQL Server 2005,Server Explorer运行开发人员浏览定义数据源的元数据和数据。Server Explorer的Data Connection视图列出了在目标数据源中发现的所有的表,试图,存储过程,函数,和程序集等。另外,Server Explorer允许您使用一些数据库的功能,如图2所示,包括图形化的查询设计器,表设计器,SQL查询窗口,和表数据查看器。
        SQL Server项目模版。允许创建SQL Server CLR项目,要调用新的SQL Server项目模版,使用File菜单项,然后选择New,选择Project。该项目类型支持C#,Visual Basic,J#和托管C++项目。每个新的SQL Server项目会自动包含了一个到sqlaccess.dll,它包含了in-process SQL Server .NET数据提供程序。在创建SQL Server Project之后,一些SQL Server特有的项模版被自动添加到您的Visual Studio 项目中。
        存储过程项模版。存储过程项模版被用来创建一个CLR存储过程。它会自动添加一个类文件到项目中,其中包含.NET存储过程代码。
        用户定义函数项模版。用户定义函数项模版用来创建一个CLR用户定义函数。它会自动添加一个类文件到项目中,其中包含.NET用户定义函数代码。
        触发器项模版。触发器项模版用来创建一个CLR触发器。它会自动添加一个类文件到项目中,其中包含.NET触发器代码。
        聚合项模版。聚合项模版用来创建一个CLR用户定义聚合。它会自动添加一个类文件到项目中,其中包含CLR聚合代码。
        创建新的SQL Server数据库。选择Toos菜单项,Create SQL Server Database选项,会显示一些对话框可以用来在目标SQL Server系统中创建一个新的数据库。
        测试脚本的创建。就像它的名字说的那样,Test Script Generation功能创建一格脚本,您可以使用它来对在Visual Studio中创建的CLR存储过程和函数进行测试。默认情况下,生成的测试脚本只是一个存根文件,他的主要用途是提供一个简单的包装,可以用来调用程序。但是,您可以自由的定义这些脚本,并添加数据和其它的功能。
        SQL/CLR调试。这个功能使您可以在Visual Studio 2005中无缝的调试CLR存储过程。SQL/CLR调试器允许您调试CLR或SQL代码,并且可以插入断点或检查和改变变量的值。关于调试CLR项目的更多信息在下面的技术浏览小节中。
        其它的项目类型。除了CLR特定的项目类型,Visual Studio 2005同样还支持所有其它SQL Server的项目的开发,包括System Management Objects (SMO),Replication Management Objects (RMO),Analysis Management Objects (AMO),和Integration Services类库。

Visual Studio与DB2 UDB 8.2集成
在一台已经安装了Visual Studio的计算机上安装DB2 Application Development Client v8.2,将会把DB2 Development Add-Ins装入Visual Studio .NET开发环境。这些add-ins为Visual Studio 2003提供了一个功能集合,它允许您使用DB2服务器并开发DB2的存储过程和函数。一些这样的功能,像IBM Explorer,让您以图形化的方式创建和管理数据连接。DB2 Tools工具栏已经添加到您的Visual Studio主菜单中,使用它您可以启动不同的DB2开发和管理工具。您也可以使用Solution Explorer窗口创建和控制DB2项目。图3显示了DB2 Application Development Client功能的概观。


图 3  DB2 UDB 8.2 和Visual Studio
        IBM Explorer。IBM Explorer是一个可停靠的窗口,它很像Visual Studio中内建的Server Explorer。IBM Explorer的数据连接视图列出了DB2资源中的表,视图,存储过程,函数,和数据适配器,无论这个DB2是本地的还是远程的。另外,IBM Explorer允许您访问一些数据库特有的功能,比如表设计器和表数据查看器。
        DB2数据库项目模版。允许创建DB2 CLR数据库项目,新的DB2数据库项目模版可以通过选择File菜单项,选择New,然后选择Project选项。DB2数据库项目帮助在Solution Explorer中创建和管理DB2数据库服务器脚本。
        DB2类库项目模版。这种项目类型允许创建和管理存储过程和用户定义函数,并且支持C#和Visual Basic项目。创建一个新的DB2类库项目,会自动添加一个引用到IBM.Data.DB2数据提供程序。DB2类库模版不能提供给J#或C++,所以您必须手动编辑代码,添加引用和DB2对象到这种类库中。
        存储过程项模版。存储过程项模版用来为您的项目创建一个DB2 CLR存储过程。一个向导会知道您选择一个DLL程序集并设定存储过程的参数和操作。当完成这个向导时,一个类文件被自动添加到项目中,它包含了.NET存储过程代码。
        DB2 Tools 工具栏。这个工具栏被集成在Visual Studio工具栏中,它允许您启动外部的DB2开发和管理工具。DB2 Tools工具栏包括:Control Center,Replication Center,Command Center,Task Center,Health Center,Journal,和Information Center。
可管理性和性能
SQL Server 2005主要的管理工具是新的SQL Server Management Studio。如图4,新的SQL Server Management Studio合并了许多以前SQL Server企业管理器和查询分析器所提供的功能。它允许您浏览服务器和数据库的元数据,以及编写和执行T-SQL查询。


图 4  SQL Server Management Studio
SQL Server Management Studio使用一个Visual Studio 2005 IDE的一个专门版本(Interactive Development Environment)建立。和Visual Studio 2005一样,SQL Server Management Studio支持创建软件工程。它允许您编写,编辑,运行,和调试代码。但是,SQL Server Management Studio用来写T-SQL,MDX,DMX和XMLA查询,而不是.NET 代码。它也与Visual SourceSafe集成,用来进行源代码的版本控制。Object Explorer窗口允许您在任意一台服务器上处理数据库对象。Solutions Explorer允许您将您的数据库的源代码进行逻辑上的划分。
SQL Server 2005提供了许多性能工具,它们都集成在操作系统和管理工具箱中。当安装SQL Server以后,一系列SQL Server相关的性能计数器被自动添加到系统中。您可以用System Monitor或通过WMI写脚本来查询这些计数器。为了帮助您优化您的数据库查询,当您用Query Editor来执行查询时,SQL Server Management Studio支持返回估计的查询计划和实际的查询计划。另外,集成的SQL Trace工具允许您跟踪数据库查询和Analysis服务器的查询的执行。

DB2 UDB 8.2允许您通过一个独立的应用程序,叫做Control Center,来控制和管理系统,DB2 UDB实例,数据库,和数据库对象。DB2 UDB 8.2 Control Center如图5所示。


图 5  DB2 UDB 8.2 Control Center
Control Center考虑到DB2数据库的三种不同的视图:Basic,Advanced,和Custom。Basic视图只包括基本的对象,如数据库,表,和存储过程。Advanced视图显示Control Center中所有可用的对象和视图。Custom视图允许您创建您自己的个性化的视图。
DB2 UDB 8.2 Control Center中集成的Development Center应用程序允许您创建存储过程和函数并将他们放到项目中。用Development Center创建的存储过程和用户定义函数是用SQL写的,而不是.NET代码。Development Center不提供源代码版本控制的功能。
DB2 UDB 8.2安装时,性能计数器被添加到系统中并且可以通过System Monitor或WMI脚本进行查询。DB2 UDB 8.2提供了许多其它的监视工具,包括一个Query Patroller Center,它可以估计查询运行所需要的消耗,并根据数据库来控制查询运行的工作量。
技术浏览
为了使您更加深入的理解在Visual Studio中集成SQL Server 2005和DB2 UDB 8.2的区别,下一个小节将带您浏览在不同的数据库产品中创建一个存储过程需要的步骤。首先,我们表达这个实例存储过程的代码使用C#。然后,我们会带您浏览创建这个.NET存储过程的过程。第一个示例用Visual Studio和SQL Server 2005的结合,第二个示例用Visual Studio和UDB 8.2来处理。当我们浏览的过程中,我们会发现两种产品实现细节上的巨大差别,以及更深入的挖掘其它相关的集成细节,比如调试.NET代码和保护创建的数据库对象的能力。



最全面的资料《SQL Server数据管理》
2008-1-8 16:451楼
[ 顶部 ]
 
xiaoxinlucky
助理工程师  点击可查看详细


十二生肖之鼠   双子座   行业勋章   技术勋章   诚信兄弟  
帖子 603
精华 12
无忧币 2017
积分 1392
阅读权限 40
来自 (保密)
注册日期 2007-12-12
最后登录 2008-6-21 离线

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2008-1-8 17:11 
SQL Server 2005 CLR存储过程的描述
访问数据库外部资源的能力是使用CLR数据库对象的一个重要的优势。标准的SQL和T-SQL豫剧可以从服务器中检索和控制关系型数据,但是他们不能访问数据库以外的服务器资源,比如文件系统或注册表。CLR存储过程(以及其它服务器端的.NET代码)可以充分的访问.NET Framework。他们可以从数据库引擎中访问关系型数据,同时也能够访问外部资源。一个C#编码的示例存储过程如下所示。这个存储过程,叫做usp_ReadTextFile,从一个存储在服务器的文件系统中文本文件中读出数据,到一个SqlString数据类型中。
using System;
using System.Data;
using System.Data.Sql;
using System.Data.SqlServer; using System.Data.SqlTypes; using System.IO;
public partial class StoredProcedures
{
[SqlProcedure]
public static void usp_ReadTextFile(string sInputFile, out SqlString sColumn)
{
string strContents;
sColumn = "";
try
{
StreamReader strReader = new StreamReader(sInputFile);
strContents = strReader.ReadToEnd();
strReader.Close();
sColumn = strContents;
}
catch (Exception ex)
{
SqlPipe sp = SqlContext.GetPipe();
sp.Send(ex.Message);
}
}
}
首先,分析using语句。这些使程序逻辑能够利用SQL Server .NET数据提供程序的命名空间里的类,而不用引用这些类的全部限定名。SQL .NET数据提供程序(在命名空间System.Data.SqlServer中)负责连接到SQL Server系统。

我们要注意的第二件事情是在方法名前的[SqlProcedure]属性。这个属性告诉.NET编译器和运行时,这个方法将会暴露为一个SQL Server存储过程。接下来,您将看到这个存储过程的默认的类名被设定为StoredProcedures。这个类包含一个静态的方法叫做usp_ReadTextFile。当您使用C#时,这个方法必须被定义为static。对于Visual Basic代码,方法需要定义为Shared。usp_ReadTextFile方法接受两个参数。第一个参数是一个输入参数,传入了一个字符串值,用来提供操作系统文件的名称。第二个参数是一个输出值(通过out关键字表示)。这个参数返回了文本文件的内容,类型为SQLString数据类型,该类型与T-SQL varchar数据类型匹配。

对于那些不熟悉C#代码的人,这里对这步操作有个快速的摘要:代码打开了一个文本文件,读它的内容,并且将内容放在SqlString输出参数中。在存储过程的开始阶段,声明了一个字符串变量,它将保存文本文件的内容。然后,在try-catch中文件被读取。首先创建了一个StreamReader类型的变量叫做strReader,并传入sInputFile变量中的值作为输入的文件名。然后,使用StreamReader的ReadToEnd方法读取整个输入文件的内容,并将内容赋在strContents变量中。在读完文件之后,StreamReader被关闭并且输入的数据被传到sColumn输出参数中。

如果在尝试读文件的过程中遇到了错误,那么catch中的代码将会被执行。在这里,一个SqlPipe对象的实例被用来发送一个错误消息给存储过程的调用者。首先,创建了一个SqlPipe对象的实例叫做sp,并使用SqlContext.GetPipe方法。然后,掉用这个SqlPipe的Send方法,用来传输Exception对象ex的Message属性的值到调用这个usp_ReadTextFile存储过程的程序中。

要将这段代码部署到SQL Server中,包括两步:编译和安装。开发人员可以通过移动程序集DLL和运行SQL Server命令来手动执行这些步骤,或者可以用Visual Studio来自动完成这些工作。要手动完成,将结果程序集复制到一个SQL Server可以访问的文件系统中,并运行CREATE ASSEMBY和CREATE PROCEDURE命令。但是,如果您用Visual Studio 2005进行开发,那么您可以简单的选择Build->Deploy Solution选项,将新的CLR存储过程安装到SQL Server数据库中。在下一节中,我们将浏览用Visual Studio 2005中创建和部署usp_ReadTextFile CLR存储过程的步骤。

用SQL Server和Visual Studio 2005创建存储过程
下表总结了用Visual Studio 2005在SQL Server 2005中创建和部署一个CLR存储过程所需要的步骤。
开发步骤总结



工具集成
为了在Visual Studio 2005中创建一个CLR存储过程,您首先创建一个SQL Server项目,打开Visual Studio 2005,选择File菜单,选择New Project菜单选项,这时会显示New Project对话框。在New Project对话框中,您从已安装的Visual Studio模版中选择SQL Server Project,并为您的项目指定一个名称。这里所用的名称将会使您的Visual Studio解决方案的名称。它也是即将创建的程序集的名称。如果在您的项目中只有一个存储过程,那么这也可以与您的存储过程的名称相同。如果您想拥有多个存储过程或其它CLR数据库对象作为项目的一部分,那么也可以是一个不同的名称。


图 6  创建一个新的SQL Server项目
点击OK按钮,将在Visual Studio 2005 IDE中创建一个新项目,并且SQL Server项目模版会提示您输入SQL Server 2005数据库的连接信息。Visual Studio用这个信息来调试和部署您的解决方案。典型的,起初这只是一个开发数据库,在测试和QA之后,.NET逻辑将被部署到一个SQL Server的生产实例当中。


图 7  指定SQL Server项目的数据库连接属性

在Connection Properties对话框中,您可以在Select or enter a server name下拉列表中,输入您的SQL Server系统的名称。如果您的开发系统中注册了多个SQL Server系统,那么当点击下拉箭头时会列出所有的注册的系统名称。如果您的目标系统没有列出来,那么您可以在下拉列表中手动的输入系统名称或IP地址。

在您选择完服务器之后,您接下来要选择您要使用的身份验证的类型,用来连接到数据库。选择Windows NT Integrated Security会将您的Windows登录的用户ID和密码传给SQL Server。如果您的服务器没有设定使用集成安全,那么您可以使用User ID和Password来提供一个SQL Server登录。

接下来,选择您要使用的数据库。点击下拉列表,那里显示了所有的您被授权可以访问的数据库。在您使用Visual Studio 2005来创建您的SQL Server项目之前,这个数据库必须已经在SQL Server中存在。

一旦您输入了所有需要的连接信息,您就可以通过点击Test Connection按钮来测试这个连接。如果所有的连接信息都有效,那么将会显示一个Successful Connection消息,否则您必须改正连接信息。点击OK按钮,将连接信息写到Visual Studio项目中,并显示Visual Studio IDE。因为在项目中连接信息是固定的,所以最好使用集成安全,它不会再项目中存储实际的登录信息。如果您显示的提供登录信息,那么您需要确保您的项目在一个安全的位置存储。


图 8  新创建的SQL Server项目

被创建的SQL Server项目起初是一个空解决方案。Solution Explorer显示了项目的名称,它是由第一次New Project对话框传入的。另外,适当的引用文件被自动添加到项目中。特别的,sqlaccess引用是包含SQL Server .NET通过程序的系统DLL,并且代码需要它来创建和执行.NET数据库对象。要在Visual Studio 2005中创建一个CLR存储过程,从Visual Studio 2005的Project菜单中选择Add Stored Procedure项。


图 9  添加一个CLR存储过程
这里要重申的是,您可以看到SQL Server和Visual Studio 2005 IDE的深度的集成。创建所有的不同的.NET数据库对象的选项在Visual Studio Project菜单中列出。另外,您也可以通过在Solution Explorer中右击项目,选择Add Item,这将会显示选项来创建不同的.NET数据库对象。两种情况都会显示Add New Item对话框,如图10所示。


图 10  选择存储过程项模版
在Add New Item对话框中,从模版列表中选择Stored Procedure选项,并在屏幕下方的Name字段中输入存储过程的名称。图10显示出存储过程将被命名为usp_ReadTextFile。点击Add,Visual Studio 2005会为存储过程添加一个新类到您的项目中。图11显示了生成的以您的存储过程的名称来命名的类文件。这个类将包含所有需要的using指令,以及一些必要的骨架代码。默认的类名被设定为StoredProcedures并且在那个类中,usp_ReadTextFile方法的骨架被创建,并且加上了前面提到过的[SqlProcedure]属性。下面由您来填充具体的实现。


图 11  生成的SQL Server 存储过程类
在您完成存储过程的编码之后,您要像其它的C#项目一样正确的编译。从Visual Studio的Build菜单中选择Build Solution。(如图12)


图 12  编译SQL Server CLR存储过程
编译整个项目,会在本地计算机上将它编译为一个程序集。在本例中,这个程序集为usp_ReadTextFile.DLL。选择Build菜单中的Deploy Solution菜单项,在SQL Server系统中创建存储过程。


图 13  部署存储过程DLL到SQL Server中
当您部署项目时,Visual Studio复制程序集到先前在Connection对话框中选择的SQL Server数据库中。实际上,它将运行CREATE ASSEMBLY和CREATE PROCEDURE语句复制usp_ReadTextFile.DLL程序集到sys.assemblies表中,并且使用这个程序集创建usp_ReadTextFile存储过程。


图 14  部署状态
Visual Studio IDE下方的Output窗口显示了部署进程的状态。如果源代码被以任何形式修改,部署进程将会在部署到SQL Server数据库前,自动重新编译程序集。如果部署成功,那么Visual Studio状态条中会显示“Deploy succeeded”消息。
在CLR存储过程被部署到SQL Server以后,Visual Studio继承功能允许您从Visual Studio IDE中调试这个存储过程。在调试CLR存储过程之前,您西药打开Server Explorer并右击创建项目时所建立的Data Connection。然后在弹出的菜单中,选择Allow SQL/CLR Debugging选项。接下来,为了调试存储过程,先在.NET源代码中为存储过程设定一个断点,然后按F5或单击绿色的Run箭头形图标。存储过程的测试脚本将运行,并且存储过程的执行将在断点处停止。如图15所示。


图 15   调试SQL Server CLR存储过程
通过调试器,您可以执行与正常的调试Windows应用程序一样的动作,包括显示和改变变量的值,以及在CLR和SQL代码中自由的单步运行。这种级别的集成,使您可以在SQL代码和.NET代码中步入和步出,在DB2 UDB 8.2中无法实现。



最全面的资料《SQL Server数据管理》
2008-1-8 17:112楼
[ 顶部 ]
 
xiaoxinlucky
助理工程师  点击可查看详细


十二生肖之鼠   双子座   行业勋章   技术勋章   诚信兄弟  
帖子 603
精华 12
无忧币 2017
积分 1392
阅读权限 40
来自 (保密)
注册日期 2007-12-12
最后登录 2008-6-21 离线

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2008-1-8 17:28 
DB2 CLR存储过程的描述
和SQL Server几乎一样,Visual Studio开发人员可以创建.NET逻辑并部署到DB2 UDB 8.2中。
DB2 CLR过程可以访问所有.NET Framework提供的功能,就像在ss中运行的.NET一样。但是,DB2 UDB 8.2实现和SQL Server实现由一些不同。这些区别将在下面的小节中说明。
为了说明这些,我们还是用一个示例存储过程,它从一个文本文件中读数据并存在String里。
using System;
using System.IO;
using IBM.Data.DB2;
namespace DB2ClassLibrary1
{
/// <summary>
/// This class and method is used for a DB2 CLR procedure.
/// </summary>
public class StoredProcedures
{
public static void usp_ReadTextFile(String sInputFile,
ref String        sColumn, out String        sErrorMsg)
{
String strContents;
try
{
StreamReader strReader
= new StreamReader(sInputFile);
strContents = strReader.ReadToEnd();
strReader.Close();
sColumn = trContents;
sErrorMsg = null;
}
catch (Exception ex)
{
sErrorMsg = ex.Message;
}
}
}
}
我们要注意的第一点是引用IBM.Data.DB2命名空间的指令。它允许存储过程使用DB2 .NET数据提供程序中的类,而而不用引用这些类的全部限定名称。和SQL .NET数据提供程序相似,DB2 .NET数据提供程序是一个.NET Framework的扩展,它允许.NET应用程序连接DB2系统并执行命令。System.IO指令也是引入并允许访问PC文件目录。
我们要注意的第二件事情是命名空间DB2ClassLibrary1。DB2 UDB存储过程模版自动为.NET项目创建命名空间。然后,您可以看到这个存储过程的默认的类名为StoredProcedures。这个类包含一个静态的方法叫做usp_ReadTextFile。
同样,对于那些不熟悉C#代码的人,这里对这步操作有个快速的摘要:usp_ReadTextFile方法使用三个参数。第一个参数是一个输入参数,它传入了一个字符串值,用来提供一个操作系统文件的名字。第二个参数是一个输出型参数,它返回文本文件的内容给调用者。第三个参数是一个输出型参数,它返回代码中可能出现的异常错误。这个参数是必要的,因为DB2不包含SqlPipe相似的对象来与过程调用者通信。
剩下的代码基本上和前面所示的SQL Server代码一样。
如果在试图读取一个输入文件时遇到错误,那么catch中的代码块将会被执行。在本例中,参数sErrorMsg被设定为Exception对象ex的Message属性的值,并返回给调用usp_ReadTextFile存储过程的程序。
下一步是创建和部署这个存储过程。
用DB2和Visual Studio 2005创建存储过程
下表总结了用Visual Studio和DB2 Stinger中创建相同的usp_ReadTextFile存储过程所需要的步骤。
开发步骤总结



工具集成
为了在Visual Studio中创建一个CLR存储过程,您首先创建一个DB2数据库项目,打开Visual Studio 2005,选择File菜单,选择New->Project…菜单选项,这时会显示New Project对话框。在New Project对话框中,从Project Types列表中选择IBM Projects,从已安装的Visual Studio模版中选择DB2 Database Project,并为您的项目指定一个名称和一个存储位置。这里所用的名称将会使您的Visual Studio解决方案的名称。与SQL Server相同,如果在您的项目中只有一个存储过程,那么这也可以与您的存储过程的名称相同。如果您想拥有多个存储过程或其它CLR数据库对象作为项目的一部分,那么也可以是一个不同的名称。


图 16  创建一个新的DB2 UDB数据库项目
点击OK,在Visual Studio IDE中创建一个新的项目。您将发现在您的Solution Explorer中,新建的DB2数据库项目包含了您可能使用Visual Studio IDE创建的每一个数据库对象。然后会显示一个DB2 Data Connection对话框,在一个下拉立标中包含所有前面定义的DB2连接。在这个示例中,我们还没有建立任何DB2连接,所以点击New Connections,显示Add DB2 Data Connection对话框(图17)。


图 17  创建一个新的DB2 UDB数据库连接
在Add DB2 Data Connection对话框中,在Server下拉列表中输入您的DB2系统的名称。如果您的开发系统中注册了多个SQL Server系统,那么当点击下拉箭头时会列出所有的注册的系统名称。选择完数据库之后,您继续建立您的连接,在Database alias下拉列表中输入您想连接的数据库,并在Database alias和Password中输入您的用户ID和密码。
一旦您输入了所有需要的连接信息,您就可以通过点击Test Connection按钮来测试这个连接。如果所有的连接信息都有效,那么将会显示一个Test connection succeeded消息。点击OK按钮,将连接信息写到Visual Studio项目中,并显示Visual Studio IDE。同样,如果您的项目包含登录信息,那么您需要确保您的项目在一个安全的位置存储。
创建一个DB2CLR存储过程,下面的步骤是使用任何CLR支持的语言编写逻辑代码。我们的逻辑代码使用C#编写的,像前面所描述的那样。C#类将被编译到程序集中,它将会被CLR使用。要添加一个C#类到您的项目中,在Solution Explorer中右击您的项目,然后选择Add->New Project菜单选项。然后会显示Add New Projects对话框。从Project Types列表中选择Visual C# Projects,然后从已经安装的Visual Studio模版列表中选择DB2 Class Library(图18)。


图 18  选择DB2类库模版
为您的类库输入名称并指定一个位置来存储您的类库。点击OK。您将发现在您的Solution Explorer窗口中,C# DB2ClassLibrary1项目已经被添加到您的项目中。DB2ClassLibrary1项目包含到IBM.Data.DB2,System,System.Data,和System.XML命名空间的引用。DB2ClassLibrary项目同样包含一个AssemblyInfo.cs文件和一个DB2Class1.cs文件。其中DB2Class1.cs包含了程序骨架代码。在这里,您要添加实现。
当您已经完成存储过程的编码后,您要编译您的类库项目到一个程序集中,选择Visual Studio的Build菜单,选择Build DB2ClassLibrary1选项。另外,您可以在Solution Explorer窗口中右击DB2ClassLibrary1项目,然后选择Build菜单项。
一旦程序集被创建,您需要将它安装到DB2数据库中。要安装程序集,在您的Solution Explorer窗口中右击DB2DatabaseProject1,选择Assemblies…菜单项,如图19。


图 19 部署DB2 UDB程序集
这时将显示CLR Assemblies对话框。在File name文本框中,选择在前面的步骤中创建的DB2ClassLibrary1 DLL,点击Install按钮来安装程序集到DB2数据库中。


图 20  安装DB2 UDB程序集
当Installation of CLR Assembly Successful对话框显示出来时,点击OK继续下一步,添加CLR存储过程。
在您添加程序集到DB2 UDB数据库中后,您可以添加一个CLR存储过程到DB2中。要添加存储过程到您的项目,点击Project菜单,选择Add New Item…。这时会显示Add New Item – DB2DatabaseProject对话框,允许您从已经安装的Visual Studio模版中选择CLR Procedure Wizard。


图 21 创建一个新的DB2 UDB CLR存储过程
这时显示DB2 CLR Procedure Wizard。它使用生成的.NET程序集来完成创建一个DB2存储过程。CLR Procedure Wizard允许您选择程序集的方法来考虑包含到存储过程的脚本中。这里,您需要选择方法,名称,和架构说明,和您想自动创建在存储过程脚本中的SQL语句。这与Visual Studio 2005/SQL Server 2005的实现方式完全不同。


图 22  创建CLR存储过程脚本
当您的以上的选择完成后,点击Finish来创建一个CLR存储过程脚本。它会在您的项目中创建一个DB2CLRProcedure.db2sp对象,其中包含CREATE PROCEDURE语句,我们需要用它来在DB2中创建存储过程。


图 23 编译DB2 UDB 存储过程
最后,您需要编译解决方案。选择Visual Studio 的Build菜单,选择Build Solution。它将会编译DB2DatabaseProject并将它部署到您在Data Connections 中指定的DB2系统中。注意Build Solution将自动将对象部署到数据库中,也就是说不需要再做其它的部署操作。
在DB2 CLR存储过程中不能集成调试的能力。

开发人员体验的对比汇总



关系型数据库之外的功能
SQL Server 2005提供了许多DB2 UDB中没有的新功能,它将扩展您的传统的关系型数据库平台的界限。SQL Server 2005拥有一个HTTP终端的功能,它允许执行Web Service请求,而不需要其它的中间Web服务器,像IIS。它也提供了三个新的应用程序子系统:SQL Server Service Broker,SQL Server Notification Services和SQL Server Reporting Services

HTTP 终端
SQL Server 2005的一个重大的新功能就是在数据库引擎中添加了本地HTTP的支持。它允许SQL Server直接处理来访的Web Service请求,而不需要像IIS的中间Web服务器。这允许SQL Server提供动态的SQL语句的执行,以及通过SOAP协议来执行存储过程。新的HTTP终端支持SOAP 1.0, 1.2和WSDL 1.1标准。SQL Server的新的本地HTTP支持功能同样支持Windows和SQL Server身份验证,以及SSL。为了和开发层的数据完全兼容,CLR存储过程返回的结果是ADO.NET Dataset。DB2 UDB 8.2需要中间的Web服务器来支持Web Service SOAP请求。

Service Broker
SQL Server Service Broker子系统,使SQL Server 2005支持开发分布式数据库的应用程序。异步排队用来创建高度可伸缩的应用程序,使它能够处理更多的应用程序服务消息,典型的是一个串行的格式。对异步的支持带来的更好的应用程序的伸缩性,因为它允许应用程序在处理高峰缓存请求,从长远看来将能够处理更多的请求。SQL Server 2005的新的SQL Service Broker子系统提供了在SQL Server实例之间的消息的可靠传输,并且全部由事务来控制。和标准的数据库事务一样,这里的事务也可以提交和回滚。用SQL Service Broker来建立的异步排队的应用程序,可以跨越多个SQL Server系统,并且仍然提供可靠的消息传输。
在这种分布式的数据库实例之间,IBM DB2 UDB 8.2并不提供支持异步连接的能力。

Notification Services
另外一个新的应用程序开发框架,SQL Server Notification Services,允许数据库管理员建立传输挑选的数据到用户和设备的通信应用程序。Notification Services起初在SQL Server 2000中作为一个Web下载,而在SQL Server 2005中被合并到标准的组件中。例如,NYTimes.com用Notification Services来通知有关当事人房地产列表的一些变化。SQL Server的Notification Services包含了终端用户设备的支持。SQL Server 2005的Notification Services通过一个强壮的,可伸缩的框架,使您在这种类型的项目中处于领先地位。
IBM DB2 UDB 缺乏这个功能。

Reporting Services
SQL Server 2005中的一个最重要的增强是Reporting Services,在任意的数据库平台中都没有提供相似的功能。起初,在SQL Server 2000中是作为附加的功能被引入的,而在SQL Server 2005中,Reporting Services完全集成到SQL Server 2005里。它是一个企业级的报表系统,提供了可视化建立报表的能力,以及在企业中安全部署这些报表。SQL Server 2005的Reporting Services是一个基于服务器的解决方案,它可以从一个广大的数据源中提取信息,包括SQL Server,Oracle,DB2,和其它的OLE DB和ODBC兼容的数据库。Reporting Services生成的报表可以以多种不同的格式描述,包括打印输出,基于Web的HTML报表,基于Windows的丰富的客户端报表,以及为移动设备描绘的报表。
在DB2中并没有一个相类似的功能。客户需要购买一个单独的报表工具,带来额外的花销。

Integration Services
SQL Server 2000用Data Transformation Services (DTS)来传输数据,它是一个提取和加载数据的灵活的工具和技术。

在SQL Server 2005中,DTS被重新架构并获得了一个新名称:Integration Services。Integration Services提供了更好的.NET集成,更优的性能,和更大的灵活性。Microsoft SQL Server 2005 建立Integration Services的目标是将它发展为一个企业级的提取、转换和加载(ETL)工具。Microsoft为Integration Services的重新设计,使它成为一个全新的架构和工具集和,提供了更强的编程的支持和更好的运行性能。新的设计,明显的区分开Integration Services的数据传输和工作流的功能,使它更易于可重用的Integration Services包的开发。和老伴本一样,新的Integration Service使用OLE DB来连接数据源和目标,使它和原来的DTS处理拥有相同的灵活性。Integration Services可以在所有主要的数据库平台之间传输数据,包括SQL Server,Oracle,和DB2,并也可以使用Sybase,Excel文件,MySql,Active Directory,Firbird和其它的数据源。SQL Server 2005 Integration Service还提供了一个全新的图形设计功能。

使用IBM的DB2,客户需要购买一个附加的模块来取得相似的ETL的能力。

Analysis Services
自从在SQL Server 7种集成了OLAP Service,Microsoft就已经成为了商业只能(BI)领域的领导者,它将OLAP从一个小技术提升到数据库的主流的级别上。利用OLAP,数据仓库,和数据挖掘技术处理数据,BI允许企业得到更多有用的信息,来进行计划和决策。利用SQL Server 2005,Analysis Services将继续领先集成BI平台。一些重要的Analysis Services的增强,在Analysis Services引擎本身中被发现。使用SQL Server 2005,Analysis Services现在可以支持多个实例。另外,它的安装过程可以被群集知道,它可以无缝的在群集中安装。SQL Server 2005在OLAP空间的另一个重大的改变是它引入了新的Unified Dimensional Model(UDM)。UDM可以看做是超越OLAP的cube的下一代改良,它通过结合最好的OLAP和关系型报表能力,允许了一个统一的报表模型。
使用IBM的DB2,客户需要购买一个附加的模块来取得相似的OLAP的能力。

Mobile Edition
当每一个以往的SQL Server版本都在为提供向上的兼容新做着巨大的努力时,一个容易被忽视的领域是SQL Server的向下兼容的能力。SQL Server 2005 Mobile Edition扩展了企业对移动设备的数据管理能力。SQL Server 2005 Mobile Edition在Windows CE平台上运行,并且它将为设备带来关系型数据库的能力,并提供了一个优化的查询处理,事务支持,和通过.NET Compact Framework访问设备数据库的能力。SQL Server 2005 Mobile Edition扩展了SQL Server数据库平台的范围,支持在企业数据库和设备之间的远程的数据访问和复制。
IBM DB2家族包括了一个数据库的移动版本,叫做DB2e。但是,DB2e是一个单独的版本,需要另外购买。

结论
将CLR集成到数据库中,扩展了数据库的能力和灵活性,并使它可以为企业应用程序在数据库和数据层之间移动代码。CLR-数据库集成利用.NET Framework的丰富的可编程能力,通过添加您自己的自定义数据库对象,允许您扩展数据库平台中内建的能力。它允许您创建更加强大的数据库应用程序,来适应变化的环境。
虽然SQL Server 2005和DB2 UDB都支持嵌入.NET逻辑到数据库中,但是SQL Server 2005项比于DB2 UDB 8.2拥有更多的优势。本文显示了SQL Server 2005提供了与Visual Studio和.NET Framework的更广,更深的集成,相比于DB2 UDB 8.2来说。SQL Server 2005对CLR更加广泛的支持,在于它支持对许多的数据库对象的创建,其中不单单是DB2 UDB 8.2中能够创建的存储过程和函数。因为SQL Server以“in process”方式宿主CLR,所以它对CLR更深的支持,提供了更有效的CLR解决方案,提高了内存利用率,线程和垃圾回收的能力,这些在DB2 UDB 8.2的外部实现中都是不允许的。详细的技术浏览展示了SQL Server 2005所提供的与Visual Studio紧密集成的优势,允许进行无缝的数据库开发,部署,和调试。另外,除了关系型数据库平台的能力,SQL Server 2005的Service Broker,Notification Services,Analysis Services,Integration Services,和Reporting Services子系统提供了一个应用程序开发平台,它远远超过了DB2 UDB 8.2所提供的能力。

关于作者
Michael Otey是Windows IT Pro Magazine的Technical Director和SQL Server Magazine 的Senior Technical Editor。他也是TECA, Inc.的总裁,该公司是一个软件开发和顾问公司,擅长于互操作和数据库应用程序。自从1983年以来,Michael已经在工作中使用了不同版本的DB2 UDB 8.2。Michael是Osborne McGraw Hill出版的SQL Server 2005 New Features Guide的作者。
Denielle Otey是TECA, Inc.的副总裁,也是一个拥有丰富的使用C,VC++,Visual Basic,和Visual Studio .NET进行软件设计,实现,测试,和调试经验的顾问。她也是许多SQL Server功能的开发人员,她在TECA, Inc.已经开发过许多DB2 应用程序。她是Osborne McGraw Hill出版的ADO.NET The Complete Reference的作者之一。



最全面的资料《SQL Server数据管理》
2008-1-8 17:283楼
[ 顶部 ]
 
xiaoxinlucky
助理工程师  点击可查看详细


十二生肖之鼠   双子座   行业勋章   技术勋章   诚信兄弟  
帖子 603
精华 12
无忧币 2017
积分 1392
阅读权限 40
来自 (保密)
注册日期 2007-12-12
最后登录 2008-6-21 离线

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2008-1-8 17:29 
版权说明

这是一份初版文件,可能会于本软件产品正式发行之前依实况进行必要的修订。

本文件中所包含的信息代表 Microsoft Corporation 于发行日前针对该问题的观点。由于 Microsoft 必须反应市场条件的变更,因此不应解释为 Microsoft 的承诺。在发行日之后,Microsoft 不保证文件中任何信息的正确性。

此白皮书仅供参考使用。MICROSOFT 对于本文件中各项信息,不作任何明示、暗示或法定的保证。

使用者必须遵守所有适用的版权法律规定。在不影响版权各项权利的情况下,若无 Microsoft Corporation 的明确书面许可,本文件中的任何部份均不得因任何目的,以各种可能的形式或方式  (电子、机械、影印、录制或其它方式) 进行复制、储存或导入至检索系统或传送。

本文件中可能述及 Microsoft 的专利、专利应用程序、商标、版权或其它智能财产权。除非取得 Microsoft 明确书面授权声明,否则本文件并未授予这些专利、商标、版权或其它智能财产的授权。

除非另有说明,本文档中用作示例的公司、组织、产品、域名、电子邮件地址、徽标、人员、地点和事件均是虚构的,并不是有意或者不应推断为与任何真实的公司、组织、产品、域名、电子邮件地址、徽标、人员、地点或事件有关联。

 2005 Microsoft Corporation。保留所有权利。

Active Directory、Microsoft、Visual Basic、Visual C++、Visual C%、Visual Studio、Windows和Windows NT是 Microsoft Corporation 在美国和/或其它国家/地区的注册商标或商标。

本文档中提到的真实公司和产品的名称均是各自所有者的商标。



最全面的资料《SQL Server数据管理》
2008-1-8 17:294楼
[ 顶部 ]
     
论坛跳转:  

| | |

| | |

| | |

标记已读 · 删除论坛Cookies · 文本版 · WAP
 
| 诚征版主 | 版主堂 | 意见建议 | 大史记 | 论坛地图
Copyright©2005-2008 51CTO.COM  Powered by Discuz!
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系。
京ICP备05051492号