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

论坛跳转:
     
标题: 比较SQL Server 2005和DB2 8.2 — 集中于开发  ( 查看:368  回复:3 )   
 
xiaoxinlucky
助理工程师  点击可查看详细


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

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2008-1-21 17:33   标题:比较SQL Server 2005和DB2 8.2 — 集中于开发
上一帖 |


QUOTE:
摘要
本篇白皮书对于开发人员感兴趣的功能,在Microsoft Windows 平台上比较和对照SQL Server 2005和DB2 UDB 8.2。我们即将讨论的内容,包括数据库相关的特性和在两个平台上可用的开发工具,以及这些特性如何影响程序员的生产力的。

目录
简介
成果摘要
Visual Studio和.NET CLR集成
Visual Studio集成
.NET集成
开发SOA应用程序
事务隔离选择
SQL语言扩展
程序代码的开发和与.NET公共语言运行时的集成       
与Visual Studio集成
事务隔离选项
面向服务体系结构相关支持的功能
查询通知
Transact-SQL 功能性和DB2 SQL
附加的开发人员的工具和架构
比较汇总
关于作者


QUOTE:
简介
几乎每个商业应用程序都用关系型数据库来安全的存储和管理数据,并当数据被多个并发用户同时访问时,能够保证正确的语义。数据库的使用,需要数据库的代码和应用程序代码中的其它部分协力工作。应用程序的数据库代码的设计、开发、测试和验证正确性,是使用数据库的应用程序中最消耗时间并且最容易出错的部分。虽然大多数关系型数据库提供了许多这样的功能,但是程序员的生产力通常被忽视,实际上这对于以数据为中心的应用程序来说,能够非常有利于开发成本和总体拥有成本的节省。

这篇白皮书面向技术的决策者,IT管理者,架构师,和数据库应用程序开发人员。在这篇白皮书中,我将比较Microsoft SQL Server 2005和DB2 Universal Database (UDB) 8.2的特性,相信使用.NET和Microsoft Visual Studio开发应用程序的开发人员会对这非常感兴趣。因为DB2在不同的平台上可用的功能级别不尽相同,所以我将这里的比较限制在许多不同的功能区域内。精确的比较参数在下面定义。另外,描述一些应用程序场景,其中将受益于SQL Server 2005的新功能。

比较的基础 – 平台和数据库版本:
SQL Server 2005和DB2 UDB 8.2都有不同功能的版本,以及不同的许可证模型。SQL Server 2005的版本中包含了一个叫做SQL Server Express的版本,它允许开发人员将SQL Server嵌入到他们自己的产品中。同样有一个相似的IBM产品,叫做DB2 UDB Express,它也具有相似的功能。SQL Server Express对于开发和部署基本上是免费的,而DB2 Express不是免费的,它要每份不到$1000。SQL Server 2005和其它版本的SQL Server,可以与运行SQL Server CE版的基于Windows CE的移动设备上的数据库进行交互。DB2 UDB可以与运行不同的操作系统的不同的移动和嵌入式设备进行通信, 它通过使用一个叫做DB2 Everyplace的产品实现。在移动设备上使用相同的数据库和主要的数据存储便于数据集成,并使得程序员能够利用他们现有的开发技能。在这篇白皮书中,我们将集中注意企业级的开发特征,并不会对移动和嵌入式版本进行讨论。

虽然关系型数据库的主要功能是支持关系型数据模型,但是作为其集成的产品/功能线的一部分,SQL Server 2005和DB2 UDB 8.2都支持非传统和非关系型的数据访问和存储。我们也从开发人员的角度,谈论了这些功能。
目标:这篇文章从Visual Studio 数据库开发人员的角度比较SQL Server 2005和DB2 UDB 8.2。其焦点在于回答 “对于数据库应用程序开发人员来书,这两个数据库哪一个是更加具有生产力的应用程序开发平台。

成果摘要
这篇文章中的评论是基于公共记载的特性,以及对SQL Server 2005和DB2 UDB 8.2的公共的陈述。选择这些功能,是因为它们在应用程序设计或程序员的生产力上的影响。两者都可以降低应用程序所有权的总成本。这些功能可以用来简化设计或提供更多粒度的设计选择,并且还可以使编码、测试和开发更加简单更不容易出错。这里是一些作者所做的总结,而文章剩下的部分更详细的扩展了这些内容。


QUOTE:
Visual Studio和.NET CLR集成
虽然DB2 UDB 8.2和SQL Server 2005都可以和Visual Studio和.NET集成,但是相比于DB2 UDB 8.2来说,SQL Server的集成更加的综合,更加的无缝,实现功能更多,并且性能更好。

Visual Studio集成
DB2 UDB提供的与Visual Studio的集成,是作为Visual Studio的plug-in出现的,叫做"IBM DB2 Development Add-Ins for Visual Studio .NET"。DB2 add-ins只提供了一些Visual Studio功能,而并没有提供一些能够影响程序员的生产力的重要的功能,其中包括:
•        通过Visual Studio调试.NET存储过程。DB2 UDB 8.2允许使用Visual Studio .NET调试SQL 存储过程,但是不允许调试.NET存储过程。开发人员不得不是用单独的工具来调试。
•        所有.NET数据库对象的自动部署。DB2 UDB 8.2允许使用Visual Studio .NET DB数据库项目进行.NET存储过程的部署。但是,.NET用户定义函数(UDF)就不能自动部署了。SQL Server 2005允许所有.NET数据库对象的自动部署,而且不需要创建单独的数据库项目。
•        BI技术的集成:所有的SQL Server BI技术,包括Analysis Service、Reporting Service和Integration Service,都集成在Visual Studio中。但是,DB2 UDB 8.2中的BI技术,比如Warehouse Center或者DB2 Intelligent Miner,都没有以任何方式与Visual Studio集成。因此,一个希望将DB2的BI功能合并到他们的应用程序中的.NET开发人员,将不得不学习使用一个不同的工具,这样会对程序员的生产力造成负面的影响。

SQL Server能够与Visual Studio完全的集成,而DB2的集成没有覆盖到开发人员的所有需求。使用SQL Server,一个.NET开发人员通常不需要任何除了Visual Studio以外的其它的工具,就可以做各种应用程序的开发。其它的SQL Server 2005工具,像SQL Server Management Studio,也具有相同的使用方法。另一方面,除了Visual Studio以外,DB2 UDB 8.2还需要它的基于Java的工具,这样将导致开发的体验不是最优的,并增加了学习曲线,减少了开发人员的生产力。

.NET集成
从表面上来看,DB2 UDB 8.2和SQL Server 2005都提供了与Microsoft .NET CLR相同类型的集成。但是经过更进一步的检查,我们发现相比于DB2 UDB 8.2,SQL Server的集成更加紧密,并能以供更多的功能,更好的性能和更强的可管理性。这个区别的重要原因,是SQL Server以”in-process”的方式宿主.NET CLR,而DB2 UDB是”out-of-process”的方式实现的。对于开发人员来说,这意味着使用.NET代码可以比传统程序上的SQL扩展提供巨大的性能提升,这使它成为程序员的工具箱中的另一个有用的工具。而相比于将代码分离到一个不同的应用程序层,进程外的CLR集成不能提供任何优势。

开发SOA应用程序
对于基于SOA的应用程序的开发,DB2 UDB 8.2和SQL Server都提供了相同的基本功能。但是它们实现方法的区别在于,SQL Server简化了应用程序的拓扑结构,并使编程和开发更不容易出错,SQL Server拥有使用简单的功能,这些功能包括在数据库服务器中并得到无缝的集成。DB2 UDB 8.2将这些功能分散在多个产品中(数据库、应用程序服务器和排队系统),并且这些功能没有被很好的集成。此外,许多的API是基于Java标准(比如Java Messaging Service),对于.NET开发人员来说没有任何价值。相比于DB2 UDB 8.2,SQL Server为开发SOA应用程序,提供了一个设计良好,集成良好并且生产力更强的平台。
事务隔离选择
对于开发应用程序来说,数据库的一个最重要的功能就是支持事务隔离。SQL Server 2005和DB2 UDB 8.2都是用锁来支持事务隔离。但是,只有SQL Server 2005可以让开发人员选择是用锁或使用版本来实现隔离。能够混合隔离形式,意味着开发人员可以使用版本来调节一部分应用程序。长时间运行的操作,比如重算和报表可以完全相容,并且不会影响其他的用户。这样能够提高程序员的生产力,因为长时间运行的操作的设计可能给应用程序带来一些没有必要的复杂性。

SQL语言扩展
SQL是一种必须用来在关系型数据库中访问数据的语言,不管它的程序代码是用.NET写的还是用SQL语言扩展来写的。SQL Server 2005的基于SQL的扩展(Transact SQL)比DB2 UDB 8.2的SQL/PL更加丰富,并且Transact SQL提供了更自然的方法来提供异常处理。SQL Server 2005中的Transact SQL也包含OLAP函数,而SQL函数的扩展在DB2 UDB 8.2中不可用。一个更加强大的SQL语言扩展使数据库程序员的生产力更强。丰富和方便的错误处理,降低了应用程序的代码复杂度和错误率。

这些问题在本文的后面章节中,将会进行更加详细的解释。

程序代码的开发和与.NET公共语言运行时的集成
SQL Server 2005支持的主要的编程API是.NET,OLE DB/ADO和ODBC。在SQL Server 2005的情况下,您可以使用基于.NET的库来开发传统的客户端和中间层代码,也可以开发SQL Server的功能的扩展代码,比如Integration Services,Reporting Services和Notification Services。这种代码同行从那个都是用Visual Studio .NET来开发的。在DB2 UDB 8.2中,Windows程序员可以使用SQL,Java,.NET公共语言运行时,使用COBOL的嵌入式编程,或其它的语言开发程序代码。在服务器上使用.NET公共语言运行时只在DB2 UDB 8.2 for Windows上支持。DB2程序员是用各种开发环境,并且DB2 UDB在Visual Studio .NET和Visual Studio 6.0中有内建的支持。执行基于引擎的语言便于快速应用程序开发,.NET还可以让企业选择适合他们的程序员的编程语言。

SQL Server一直支持在数据库中用T-SQL写的的程序代码。T-SQL是一个对SQL的扩展程序集合,它和ISO-ANSI SQL/PSM(持久的存储模块)有松散的联系,在ANSI SQL规范的第3部分定义。T-SQL与SQL/PSM并不完全兼容,但是它确实超越了SQL/PSM,支持附加的系统定义的聚合,数据操纵,和数学函数。您写的存储过程可以充分利用代码与数据的紧密联系,并且这减少了从客户端到服务器的网络往返的次数。另外,存储过程是一个确保集中管理和安全的方法。

在SQL Server 2005种,程序代码可以用.NET语言或T-SQL来编写。C#,Visual Basic.NET,和托管C++明确的得到支持,但是其他的.NET语言比如Fujitsu COBOL.NET也可以使用。数据库对象可以用.NET或T-SQL来编写,包括存储过程,用户定义函数,和触发器。

DB2 UDB通过SQL PL编程来支持SQL语言扩展。SQL PL是一种代码编程的实现,它非常接近ANSI SQL/PSM。DB2对SQL/PSM只做了少量的扩展,但是这种实现提供了所有标准中所指定的内容。

在Microsoft Windows操作系统上运行的DB2 UDB 8.2中,您可以使用.NET语言来编写存储过过程和用户定义函数。.NET连接Java,SQL PL,基于COM的编程和其它的语言如传统的C和C++作为DB2程序编程的平台。使用.NET语言,您可以编写存储过程和用户定义函数,但是触发器必须使用SQL PL来编写。当代码使用或执行复杂的数学公式时,使用.NET语言而不是SQL来编写代码, 会获得更好的性能。在DB2中,解释器是一个相对较新的功能,Transact SQL通常都是解释执行的。.NET代码可以访问外部的资源(比如文件,事件日志,注册表或外部的web services)并可以使用现有的.NET库,比如正则表达式(RegEx)。

SQL Server 2005 .NET过程和DB2 UDB .NET过程的主要区别在于它们是怎样被执行的。SQL Server 2005直接在SQL Server的进程(一个Windows服务)中宿主.NET运行时。因为.NET过程在SQL Server的进程中运行,所以它们比Transact SQL过程更快(查阅联机文章"Using CLR Integration in SQL Server 2005"中关于讨论Transact SQL 和.NET过程在特定的应用场景中哪一个更快的问题)。运行在进程中的.NET过程通常会比在进程外运行的代码更快,无论是在一个不同的SQL Server实例上还是在一个单独的中间层进程中。

通常,在一个数据库进程中直接运行本地代码不是一个好主意。运行时(.NET)和SQL Server在内存管理策略和其它资源管理的区别,是一个非常重要的问题。可以(并很安全的)在SQL Server的进程中运行.NET代码的原因是,.NET的2.0版本宿主API被更新为,使运行时宿主(在本例中是SQL Server)能够控制运行时如何操作资源管理。这个功能只能在.NET 2.0中使用。SQL Server使用这种宿主控制的功能,来保证.NET不能泄露内存,不在SQL Server控制下加载代码,或进行任何影响SQL Server的稳定性和可伸缩性的操作。SQL Server定义了三种代码安全级别,这些安全级别的使用,取决于DBA的选择,并且可以基于.NET反射和特定的代码属性用来禁止SAFE或EXTERNAL_ACCESS级别的代码使用不安全的编程实践。最后的安全级别,UNSAFE,很像一个安全的扩展存储过程。

SQL Server程序代码还可以使用Open Data Services API,编写扩展存储过程(XP)。另外,通过特殊的系统存储过程,代码可以调用COM对象,将它们加载到SQL Server进程中。因为这种代码不受制于任何的SQL Server控制,所以它的安全性不如.NET代码。一个善意的,但是没有写好的XP可能会引起内存泄露,线程管理的问题,或者破坏SQL Server内存的缓冲区。.NET代码(除了使用UNSAFE级别)不会导致这些问题。

使用SQL Server 2005,您可以使用.NET代码编写存储过程,用户定义函数和触发器。另外,.NET用户定义类型和用户定义聚合可以在SQL Server中创建而不能用DB2 UDB。我们将在下个小节中讨论UDT和UDA。

DB2 UDB 8.2运行.NET 1.1,这个版本对于宿主控制只能进行很少的调解。因为DB2 UDB 8.2不能控制.NET代码,所以它必须以FENCED NOT THREADSAFE模式运行。这意味着每个.NET过程的实例都在它自己的进程中运行(db2fmp.exe实例)。虽然这保证了数据库的稳定性,但是这使得代码的伸缩性比SQL PL的代码更差。SQL PL代码通常在与DB2相同的进程中运行,指定为NOT FENCED的C和C++代码也是一样的。DB2 UDB DBA可以指定高信任度的代码为NOT FENCED,这基本上和SQL Server扩展存储过程是等价的。

DB2 UDB 8.2的代码安全性的第三种选择为FENCED THREADSAFE。以这种级别执行的代码运行一个单独的执行引擎,并且所有基于VM的代码的实例共享一个单独的进程。Java代码可以在DB2 UDB 8.2中以FENCED THREADSAFE运行,但是.NET代码不可以。这意味着DB2 UDB 8.2中的基于.NET的代码被限制在最小的可伸缩性执行选项中。

最终的区别在于,在SQL Server中,通过使用CREATE ASSEMBLY语句将.NET程序集作为一个普通的数据库对象编目在数据库中。程序集服从于安全控制,使用普通的数据库工具来备份和恢复,并且可以和数据库一起移动。在DB2 UDB中,.NET程序集被存储在文件系统中,并且必须单独的保护和管理。

SQL Server 2005和DB2 UDB 8.2都拥有一个.NET数据提供程序。这个提供程序不仅可以在客户端可使用,而且可以在.NET存储过程,UDF,和触发器中用来访问数据。虽然使用SQL访问数据通常会更快,但是当.NET代码需要调用SQL并处理计算时,使用相同的.NET代码访问数据并进行计算会使需要的附加指令达到最小。例如,当需要大量的数据库指令来实现一个数学函数时,比如许多数据的科学分析,这将会获得很大的收益。因为代码是与数据库的上下文集成的,所以每一个提供程序都有一个“上下文类”(SqlContext和DB2Context),它封装了连接和其它的数据库环境信息。因为SQL Server 2005 .NET代码在SQL Server进程中运行,所以在SQL Server的数据提供程序中的类的实现可以更加紧密的集成,并提供更好的性能。因为SQL Server 2005 .NET代码可以用来实现数据库触发器,所以一个特有的SqlTriggerContext类封装了一些数据库触发器可能使用的信息。另外,SQL Server数据提供程序不会通过默认的或附加的安全来假扮调用者或所有者。万一过程序要是用手动的假扮,那么可以使用SqlContext中的一个WindowsIdentity属性。DB2 UDB也可以使用 Windows Identity。

用户定义聚合和用户定义类型的支持
SQL Server 2005支持用.NET类编码的用户定义聚合。可以使用CREATE AGGREGATE DDL在SQL Server中定义新的聚合函数。您可以通过编码四个众所周知的方法来实现用户定义聚合类,您也可以通过使用.NET SqlUserDefinedAggregate属性类为SQL查询引擎指定序列化细节和优化提示。聚合函数可以用在允许使用系统定义的聚合的SQL语句的任何位置,包括新的顺序函数。被聚合的数据类型没有必要一定是聚合返回的类型,例如,您可以使用一个用户定义聚合来计算VARCHAR字段中实际字符的数量,而这个聚合将返回一个INTEGER数据类型。用户定义聚合对于执行特定域的聚合公式非常有用。使用一个SQL游标来执行相同的函数更加可取,因为SQL 查询引擎会使用并行处理,并且将它们与查询计划集成。DB2 UDB 8.2没有提供内建的用户定义聚合,虽然您可以编码聚合函数,但是这些不能被查询引擎在任何内建的聚合可以使用的地方使用。

SQL Server 2005和DB2 UDB 8.2提供了对两种类型的用户定义数据类型的支持。第一种用户定义类型是简单的一种在数据库种已经存在的类型的别名。例如,类型ZIPCODE可以被定义为SQL中的VARYING CHARACTER(9)类型的别名。这些在SQL Server中成为用户定义数据类型(UDDT),在DB2 UDB中被称为单值类型(distinct type)。单值类型是ANSI SQL-2003标注的一部分。

DB2 UDB同样支持SQL结构类型。这些类型可以包含多个数据属性,就像关系表所做的。结构类型可以包含其它结构类型的实例作为其属性,并且可以包含其它结构类型的引用。访问和更改方法会自动为每个属性创建,但是您也可以定义其它实例方法。结构类型通常使用SQL CREATE TYPE语句来定义。在创建类型以后,方法(不同于内建的访问器和修改器)使用一个单独的CREATE METHOD DDL语句来添加。方法可以在C++,Java和其它的语言中执行,但是不能是SQLCLR代码。除了使用一个结构类型作为表中的一列,您也可以创建类型化的表和视图。
DB2 UDB结构类型可以使用面向对象的概念比如继承和动态方法调用。您可以在CREATE TYPE中使用”UNDER”关键字定义继承层次。动态方法调用指的是,基类型的方法可以在派生类型被重新实现,在运行时,根据那种类型被使用,会调用适当的方法。

对于用户定义类型功能之上的特定功能的支持,在DB2 UDB 8.2中是通过一个Extender架构来提供的。Extender可能包括用户定义类型,用户定义函数,特别的实用程序,支持应用程序和API。

虽然SQL Server UDT在理论上可以是结构类型或者简单类型,但是这里并不推荐使用UDT来表示包含多个事实的数据。例如,即使一个日期可以描述为月、日、和年,一个日期也表示一个简单的事实。SQL Server UDT是希望扩展标量类型系统,而不是实现结构类型。SQL Server UDT不支持继承和从来自T-SQL的动态方法调用。您可以像列一样使用UDT,但是SQL Server没有类型化表,类型化视图,或类型的引用的概念。

SQL Server UDT使用.NET类来实现。这些类包含一个.NET属性类,它定义SQL Server为类如何分配存储以及如何将它保存在数据库中。这种持续的描述被限制在8000字节。作为UDT使用的.NET类必须实现一些众所周知的属性,方法,和接口,所以它们和内建的SQL类型一样。虽然Transact SQL不能“看到”继承关系,但是这些类可以通过.NET继承实现,并且直接的.NET-to-.NET调用将会使用.NET的面向对象概念。方法的重载明确的不受支持。类的共有的属性和字段可以被用作访问器和修改器,但是在一个Transact SQL Update语句中,在同一时间内只能指定一个修改器。类的附加的共有方法对于Transact SQL是可见的,使用一个自定义的.NET属性类来告知Transact SQL,这些方法是否有访问器或修改器语义。




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


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

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2008-1-21 17:42 


QUOTE:
与Visual Studio集成
SQL Server 2005和DB2 UDB都提供了与Visual Studio的集成。它们和一个.NET CLR组件项目类型一起,提供了一个数据管理和部署的Visual Studio项目类型。SQL Server 2005还包括了六中不同类型的报表和商业智能项目的支持。SQL Server 2005和DB2 UDB都提供了对SQL程序代码的Visual Studio调试,但只有SQL Server 2005集成了调试.NET程序代码的支持。

程序员为SQL Server 2005开发和调试.NET程序代码,可选择的工具是Visual Studio 2005。您可以使用SQL Server数据库的两个不同的项目类型,Database Projects和SQL Server Projects。您也可以在同一个开发环境中编写客户端代码。

您可以使用一个数据库项目来编写和调试Transact SQL脚本。模版脚本对于表,视图,存储过程和触发器都是可用的。另外,当您向项目中添加一个新的数据库查询时,您可以使用一个图形化的查询设计器。一个数据库项目的布局在图1中显示。



您使用SQL Server项目来编写和调试即将在数据库中的CLR代码。SQL Server项目可以使用C#,VB.NET,和C++语言。模版类对于存储过程、用户定义函数、触发器、用户定义类型和用户定义聚合是可用的。这些数据库对象可以被自动部署到数据库和您选择的实例中。自动部署CLR对象支持CREATE功能,但是不支持ALTER功能。您可以编写测试脚本,并使其作为数据库的一部分,然后从Project菜单上选择Debug/Start,使用您选择的测试脚本来调试。Visual Studio 2005允许开发人员调试Transact SQL代码和SQLCLR代码,而且您可以从Transact SQL中调试到SQLCLR中,反之亦然。开发人员也可以从客户端代码调试到Transact SQL或SQLCLR程序代码中,或同时调试这三种类型的代码。



Visual Studio Server Explorer允许程序员浏览SQL Server数据库对象。您可以得到一个图形化的树状图,包括表,视图,函数,过程,同义词,类型和程序集。大多数的数据库对象定义都是可更新的,而且在对象中的数据可以通过使用"show data"菜单项来查看和更新,这也受限于用户/程序员的权限。

DB2 UDB 8.2为Visual Studio和Visual Studio 2003提供了附加的工具(IBM DB2 Tools)。我将讨论Visual Studio 2003的附加功能,因为它和Visual Studio 2005的扩展十分接近。您可以使用两个不同的项目类型,DB2 Database Project 和DB2 Class Library。

DB2 Database Project用来创建和部署数据库对象。模版和向导允许您创建和部署表,索引,触发器,视图,过程,函数和脚本。数据库对象向导包括了一系列的面板,它以图形化的方式指导您完成所有的步骤和对象(例如,一个表或视图)提供的选项。如果您不需要图形化的支持,您可以选择一个模版,并自己编写对象定义的细节。同样还有一个CLR过程的向导,它与DB2 Class Library项目一起,允许您建立和部署SQLCLR过程的定义到数据库中。您可以使用DB2 Class Library项目为存储过程创建.NET代码。DB2 Class Library项目包含了一个到适当的DB2 .NET 数据提供程序程序集的引用,以及一个模版存储过程。没有集成调试运行在DB2中的SQLCLR存储过程的功能,虽然可以在Visual Studio中调试DB2 SQL PL存储过程。



虽然您可以用Visual Studio Server Explorer查看DB2表,视图,和存储过程,但是对于DB2数据库来说,是用IBM Explorer add-in会得到更多的功能。IBM Explorer包括了对DB2数据库的功能,相似于Server Explorer对SQL Server的功能。这包括使用一系列的向导,来查看和创建表,索引,触发器,视图,存储过程,和函数。另外,您可以查看和更新表和视图中的数据,而且可以筛选在view/update面板中显示的数据。对于Windows .NET客户端,还有一个选项用来在IBM Explorer中创建一个DB2DataAdapter(一个封装SELECT/INSERT/UPDATE/DELETE的对象)。当使用SQL Server时,这里会有一个向导。

Visual Studio 2005也可以使用不同的商业智能项目。集成了包括SQL Server Analysis Services,SQL Server Integration Services,SQL Server Reporting Services和其它。在图4中显示了可用的SQL Server Business Intelligence项目。DB2的商业智能项目没有集成在Visual Studio中。



QUOTE:
语言程序开发人员感兴趣的其它工具
SQL Server 2005语言程序开发人员可以使用其它的工具,在数据库内部开发,跟踪,和排错应用程序。SQL Server Management Studio (SSMS)是一个在开发人员和DBA之间共享的工具。虽严SSMS运行为一个单独的工具,但是它们共享许多基本的界面和功能,包括与Visual Studio的解决方案和源代码的集成。使用SSMS,您可以使用模版来开发存储过程和其它的数据库对象。您也可以使用SSMS来直接查询数据库。文本形式和图形化的查询计划都可以用来为查询排错。在SSMS中,图形化的查询计划也可以保存为一个XML格式,并可以让其它的开发人员完全真实的审阅。Visual Studio可以用来开发和部署报表,以及集成和OLAP服务项目。我们将在这篇文章的后面讨论。SQL Server Profiler使开发人员可以对SQL Server的查询做实时的监视和跟踪。SQLCMD是一个命令行工具,它可以用来运行脚本。运行脚本是直接从命令行或通过调度SQL Agent任务来完成的。

DB2 UDB 8.2应用程序开发人员使用图形化的Command Center工具来开发和编目程序代码,并用CLP(命令行处理器)工具来执行它们。您可以使用Query Patroller和Visual Assist来跟踪一个查询,或得到查询计划的一个图形化的表述。

下面的列表关联两种数据库的开发人员工具



事务隔离选项
SQL Server 2005和DB2 UDB都支持四个ANSI SQL标准的事务隔离级别,并使用锁来实现它们。SQL Server 2005和DB2 UDB使用共享锁和排它锁的结合来实现必要的隔离,两个锁默认都是在行级别上实现的,并且当锁定的总行数非常大时将使用锁升级的技术。DB2 UDB 8.2使得DBA能够通过控制maxlock(锁升级发生前锁的百分比)和locklist(锁列表的最大容量)参数,更加细粒度的控制锁升级。SQL Server 2005和DB2 UDB 8.2默认的隔离级别为READ COMMITTED。这种类型的事务隔离也被称为悲观隔离。

SQL Server 2005和DB2 UDB 8.2都有一个隐式的事务模型。SQL Server 2005在Transact SQL中使用BEGIN TRANSACTION/END TRANSACTION语句,支持包含事务嵌套的用户定义事务界限。

SQL Server添加了通过版本化来实现隔离的能力,换句话说,存储行的不同版本。可以指定语句级别的版本化或事务级别的版本化。使用那种类型的版本化,写入器都不会阻塞读取器,并且读取器默认不会被阻塞(使用一个查询提示可以强制一个读锁定)。使用语句级别的版本化,读取器总是读到最后提交的事务的数据。事务级别的版本化和读事务开始时一致的数据。数据库通过版本化来支持隔离,必须提供冲突检测,所以尝试基于一个已经被另外一个用户更新了的数据的更新,将会导致更新操作回滚。版本化也包括在被更新的过程中存储行的老版本的附加开销。SQL Server 2005将它们这些行副本存储在TEMPDB数据库中。通过版本化实现事务隔离也被称为乐观隔离。

SQL Server通过一个新的事务隔离级别支持事务级别的版本化,它叫做SNAPSHOT。语句级别的版本化是通过设定一个数据库级别的选项来实现的。这个选项使得语句级别的版本化为默认选项,也就是说,以read committed隔离级别开始的事务将使用语句级别的版本化。版本化默认是禁用的,没有版本将被保存,除非一个版本选项在数据库中被启用。

事务隔离选项在下表中列出。



Snapshot隔离级别的支持使SQL Server程序员能够使用选择的snapshot语义的应用程序解决死锁问题。另外,snapshot隔离的支持简化了使用版本化语义建立的应用程序的转换(两个最著名的版本化数据库是Oracle和RDB)。通常的,从版本化数据库转换到锁数据库的应用程序必须进行重新架构设计,以避免事务死锁和由于锁定导致的整体数据库延迟。使用SQL Server 2005,这种转换更加简单。

通常,snapshot隔离增加并发病减少锁定。因此,它也被称为“乐观并发”。在锁数据库中,乐观并发可以在应用程序级别上,通过时间戳的管理实现,或者可以建立在数据库的事务管理中。在数据库中建立乐观并发降低了应用程序编程的复杂度和错误率。在一个关系系统中,当只有很少的机会两个用户试图同时更新相同的行时,这个功能将会非常有用。例如,一个web前端,用户只是修改他们自己的数据。在这种情况下,使用乐观并发会提高报表和列表处理的速度,因为数据写入器不会阻塞数据读取器。

版本化和锁的实现,使数据库应用程序设计更加灵活的使用最好的,最有效率的事务隔离级别。版本化也使开发人员能够"spot tune"一个死锁或锁转换问题的应用程序,而不需要完全重写应用程序。


QUOTE:
面向服务体系结构相关支持的功能
XML 支持
XML数据可以以三种基本方式存储在关系型数据库中:
1.        大的字符字段
2.        分解到关系型数据表中
3.        XML数据类型
关于对于后两种类型的存储,匹配SQL名称到/从XML元素或属性名,以及匹配SQL数据类型到/从XML架构数据类型的ANSI标准,在ANSI SQL 2003规范的第14部分中被指定。
SQL Server 2005和DB2 UDB都支持以文本方式存储XML数据。DB2 UDB使用XML Extender功能提供对XML在文本列中的附加支持。XML列使得XML的存储或作为一个文件指针或是表中的一列。XML列使用三个XML用户定义数据类型(截然不同的类型):XMLVARCHAR,XMLCLOB,和XMLFILE。您可以建立特别的"side-tables"来索引XML信息,使用Document Access Descriptor (DAD)文件来简化查询。您可以在XML列中替换单独的元素或属性文本值,在SQL查询中使用元素或属性,并且在插入时验证XML。文档中的信息也可以使用NET Search Extender来搜索。SQL Server 2005不含有特定的功能来存储XML为文本,但是它提供了XML视图,允许对于关系表的查询就像是XML一样。XML数据使用SQL Server 全文索引来搜索。
在DB2 UDB中使用XML集合来实现组合和分解。XML和关系型数据的匹配,是在Document Access Descriptor (DAD)文件中指定的。DB2 UDB 8.2支持ANSI SQL 2003的组合和分解函数,叫做XMLPARSE 和XMLSERIALIZE。另外,还有组合函数XMLAGG,XMLCONCAT,XMLELEMENT,XMLFOREST,XMLNAMESPACES,和XMLROOT。SQL Server 2005使用原来的OpenXML UDF支持将XML分解到关系型数据中,以及使用新的再XML数据类型上的xml.nodes方法。使用nodes()方法的优势在于,在将它解析到简单类型之前,XML不会被加载道DOM中,这确实是一个性能/存储上的节省。SQL Server 2005支持从SQL组成到XML数据中,可以使用对Transact SQL的特有的扩展,SELECT ... FOR XML。四种SELECT ... FOR XML被支持,其中FOR XML RAW 和FOR XML AUTO是最简单的用来生成以元素为中心的或者以属性为中心的XML。FOR XML EXPLICIT 和FOR XML PATH可以生成混合的元素和属性,其中FOR XML EXPLICIT更加难写,但是比FOR XML PATH表现力更强。SQL Server不支持ANSI SQL 2003函数。
SQL Server 2005添加了一个原生XML数据类型。这是ANSI SQL 2003标准中的内建XML数据类型的第一次实现。类型最终是作为二进制存储的,更加易于查询和解析。多种输入编码都受支持,但是输出永远是UTF-16。这里同样支持XML片断和XML文档。XML可以通过标准XSD架构格式的XML架构来类型化。XSD架构可以直接被编目,并作为XML SCHEMA COLLECTION存储在数据库中。XML SCHEMA COLLECTION只是一个“普通”的数据库对象。由一个XML SCHEMA COLLECTION类型化的列,变量和参数,在数据插入和更新时,都要做验证。XML SCHEMA COLLECTION也允许通过改变XML数据类型列的验证和更新XML SCHEMA COLLECTION,来版本化XML架构。
DB2没有原生的XML数据类型,但是通过XML Extender存储的数据可以被一个XML架构或DTD(文档类型定义)来验证。DB2中也没有通过一个架构集合实现数据库架构存储的概念。
SQL Server 2005拥有一个W3C XQuery语言的子集的实现,用来查询数据库内部的XML数据类型。XML数据的XQuery是通过在XML数据类型上的四种方法实现的:exist(),value(),query(),和nodes()。这些方法可以用在SQL Server的表和视图,基于XML的检验约束,SQL查询,或XML数据类型变量上的查询中。SQL Server的XQuery操作被静态的类型化,并且还有两个特别的XQuery函数:variable() 或sql:column(),它们允许关系型数据库被包含在一个XQuery查询体内。四种不同类型的XML索引可以被建立,并用来提高这种类型的XQuery操作的速度。XQuery操作被建立到SQL Server查询引擎中以提高了效率,并且SQL语句的SQL和XQuery部分被放到同一个查询计划中,这样会优化整个计划。SQL Server 2005通过对XQuery词汇的扩展和xml.modify()方法,支持XML数据类型的原地更新。原地的Insert,delete和运算的替换值在XML数据类型中得到支持。SQL Server 2005全文索引对于XML数据类型是可见的。
DB2 UDB XML Extender可以在XML类型上,使用side-tables优化一些XPath查询。其中side-tables就像SQL Server 2005种的XML索引的实现,没有与SQL Server的特有的辅助XML索引的等价物。XSLT可以存储为CLOB数据类型,并使用XSLTTransformToClob 和XSLTTransformToFile函数。DB2 UDB支持 一个同盟数据库的概念,这和SQL Server 2005中的连接服务器的概念很相似。XML数据源,包括NICKNAMES和一个Websphere应用程序服务器可以用作一个同盟服务器,并允许XML和DB2关系表的联接。
SQL Server 2005和DB2 UDB都提供了从一个文件向数据库中插入XML的机制。SQL Server 2005通过对INSERT INTO...SELECT...语句的扩展,提供了这个功能。DB2 UDB提供了一个XMLClobFromFile函数,并添加了一个XMLFileFromClob函数来产生一个XML输出文件。
异步操作
每一个高度可伸缩性的数据库应用程序包含一些表,它们在一个通信系统中更好的被实现。无论在哪,应用程序的一部分向一个表中写入,并且另一个部分读出并处理那个表,那么这个表实际上用作为队列。典型的示例有:顺序处理,运行和计划任务,和MRP(制造业资源规划)预报操作。
SQL Server 2005通过Service Broker向数据库中引入了异步的事务队列操作。在这之前,数据库和对于这些数据库的队列操作是分开的产品,如使用MSMQ,MQ Series,或者其它的消息队列产品。在这里,我将讨论一些Service Broker特有的功能,以及使用内建在数据库内部的事务队列的优势。
SQL Server Service Broker不是一个普通目的的队列系统。它为建立有异步操作的数据库应用程序提供了需要的功能。Service Broker唯一支持的队列结构是事务队列,能够保证一次并只有一次消息传递。Service Broker服务,队列,和其它元数据作为数据库对象被内建到SQL Server中。它的对象(甚至是路由信息)是使用SQL DLL定义的,它的操作是通过Transact SQL 的DML扩展来调用的。这些数据库对象可以和其它SQL Server中的对象一起备份和还原。没有必要为Service Broker管理一个单独的Windows服务。Service Broker与SQL Server共享一个单独的事务上下文,这里也不需要分布式事务。
MQ Series是一个通用的队列系统,提供了不同质量的服务,并且除了终端-终端 范型外还支持 发布-订阅 范型。DB2 拥有与MQ Series的良好集成。如果它们运行在同一台机器上,DB2 和MQ Series可以共享一个事务管理器,在这种情况下不需要分布式事务。MQ Series运行DB2 UDB之外的在单独的产品中,有它自己的Windows服务和基础架构,并且必须单独管理。队列消息不会在数据库中存储,所以不会和数据库一起备份和还原。一个使用单独的队列和数据库产品的应用程序将会更加的复杂,因为代码必须要有足够的灵活性。拥有单独的子系统,也会增加可能的失败的点的数量。这意味着排错和调试将更加耗费人力和时间。
Service Broker也有一些在队列系统没有的功能。Service Broker使用两个终端间的对话来工作,并且在一个会话中的消息保证按顺序到达,即使在一个会话中使用多个事务。单独的会话可以被聚合到一起,并且在Service Broker应用程序中会话组是通信的单元。因为基本元素是会话组,而不是消息,所以您只能对于相关的会话组接收消息,而不用从队列中取。状态管理在应用程序的异步部分中更加容易,因为状态可以存储在数据库中。
Service Broker可以在数据库中使用激活存储过程,或给数据库外部的应用程序发送信号。激活存储过程可以用来在存储过程中实现“多线程”,多个激活过程的副本将并发的运行,直到一个用户定义的最大值。激活存储过程的每个备份都针对查询运行,RECEIVE命令得到下一个还没有被服务的会话组。通过调整同时能够运行的激活存储过程的个数,可以在工作高峰时段运行更多的工作。MQ Series可以使用消息触发器来为外部应用程序发送信号,但是不能直接定义存储过程为激活程序。
Service Broker 和MQ Series都可以以XML格式发送消息。Service Broker消息可以使用一个XML SCHEMA COLLECTION来验证。另外,Service Broker提供了命名的消息类型并强制只有正确的消息类型可以发送自正确的终端。DB2 UDB拥有通过MQ Series发送XML格式的消息的内建的支持。
HTTP数据库客户端和Web Services
SQL Server 2005用户可以使用特有的库或HTTP和SOAP调用来访问数据库。使用HTTP和SOAP作为一个客户端进行数据库访问,您通过web service协议与数据库通信。SQL Server可以使用Internet Information Server (IIS),通过SQLXML,来发布SQL Server数据,并且通过HTTP终端实现数据库内部的支持。SQLXML为以前的SQL Server版本提供了向后兼容,HTTP终端是SQL Server 2005种的新内容。DB2 UDB也使用特有的客户端通信库,并且通过集成Websphere应用程序或其它web服务器,可以使用HTTP通信。就像前面提到的.NET操作一样,在SQL Server进程用运行连接,而不是在一个单独的web服务器上,意味着执行性能的提升。如果在相同的机器上使用一个单独的web服务器进程是可行的,如果在数据库和web服务器之间的网络通信非常快,或者如果混合数据库和web操作在一个静态页中是必须的,那么一个单独的web服务器或应用程序服务器将更加可取。
SQL Server HTTP终端被定义为普通的数据库对象,并且访问它受限于SQL Server的权限,以及特有的CONNECT ENDPOINT权限。终端可以宿主特定集合的存储过程和用户定义函数,并且允许一般的SQL语句。每个存储过程或用户定义函数都将生成一个Web Service操作。您可以将SQL Server生成的WSDL(Web Services 描述语言)发布,或为每个操作自定义WSDL。HTTP终端不需要web Server,而是像其它的两层客户端的API一样,直接连接到SQL Server中。SQL Server的安全一直被使用,而且发送密码的身份验证方法(比如基本身份验证)必须使用SSL完成连接。
DB2 UDB使用叫做WORF的架构来支持web services,该架构是一个DB2 web services对象的运行时框架。使用这个架构,您将为您希望支持的每个操作生成一个DADX文件。操作包括通过XML Extender发送XML内容,发表存储过程和用户定义函数,以及支持一般的SQL语句。这个DADX文件可以使XML数据符合XML列或集合,或简单的定义存储过程的输出。强类型的WSDL从DADX文件生成,如果支持普通的SQL,一个一般的WSDL消息类型同样会被发布。Websphere或其它的应用程序服务器,比如Apache,必须和WORF一起使用。也可以使用一个集成的Websphere服务器,使它在分开的进程中运行。Websphere是一个单独的产品,并会带来额外的成本。
SQL Server SQLXML支持web services和HTTP通过XSLT对SQL Server数据进行整形。SQL-XML视图(使用XPath)和普通的SQL语句可以直接被发布为HTTP调用(部推荐),或通过在IIS服务器上的SQLXML模版文件。一种特殊的格式叫做updategram可以用来通过一个HTTP消息更新SQL Server数据。Internet信息服务器必须和SQLXML一起使用,并且权限是通过IIS和一个特殊的配置工具定义的。
DB2拥有一些特定的系统定义函数的web services 消费者。SQL Server 2005可以成为一个通过SQLCLR存储过程的拥有适当的安全级别的web services消费者,如果假扮在SQLCLR存储过程的内部执行。SQL Server 2005也可以通过集成服务使用web services 。
查询通知
SQL Server 2005引入通知来支持SQL Server查询。您可以使用这种支持来发送一个命令到SQL Server,并且发送一个请求,如果再次执行相同的命令所得到的结果和起初所得到的结果不同,那么将声称一个通知。您可以使用一个从属对象来实现,它检测何时底层的数据被改变。发送到服务器的命令可能通过任何形式的客户端API发送,比如ADO.NET,OLE DB,Open Database Connectivity (ODBC),Microsoft ActiveX Data Objects (ADO),或SOAP,而且它将包含标签表明需要一个通知。对于请求中的每一个部分的执行,服务器创建一个“通知预约”,它将引发请求中包含的每一条语句。通知将通过一个应用程序可以查询的SQL Service Broker队列传递,并在通知可用时使用激活服务或阻塞语句返回结果。程序通知对于在应用程序中启用结果缓存来说非常有用,比如数据库驱动的Web站点。
DB2 UDB 8.2没有等价的内建功能。DB2 开发人员不得不手动的建立相同的功能,而且可能使用单独的Websphere应用程序服务器或MQ Series。


QUOTE:
Transact-SQL 功能性和DB2 SQL
在这个小节中,我将比较在两个产品中的一些SQL功能。因为SQL Server和DB2的主要OLAP功能都包含在一个单独的OLAP服务器上,它可以与关系型服务器进行互操作,所以在这个部分将会做关系型数据库功能的比较。
OLAP 函数
SQL Server 2005和DB2 UDB 8.2 都支持ANSI SQL 2003顺序和排序函数。DB2支持标准的 ROW_NUMBER(),RANK(),和DENSE_RANK()函数,SQL Server 2005也支持这些函数,并添加了一个NTILE(n)函数。两个数据库都支持使用PARTITION BY关键字在OVER()从句中分区。
SQL Server 2005在SQL语句中支持PIVOT和UNPIVOT函数。这些函数是ANSI SQL 2003 OLAP函数的一部分。在一个SQL语句中的PIVOT表达式用来基于特定列的值提供聚合分组(这些可以是系统定义的聚合,SQL Server支持用户定义聚合)。PIVOT也可以用来基于列值规范化不规范的数据,它将列值转到列中。如果数据库包含“属性列”,其中在引用表中的每个值都包含不同的“名字-值”属性对,那么这将非常有用。UNPIVOT可以用来执行与PIVOT相反的操作,它用来将正规数据非正规化到一个目标表的一个单列的“属性-值”对中。DB2支持使用DB2 Cube Views来旋转和创建数据透视表。
SQL Server 2005 Analysis Services也提供了MDX查询语言,它包括了一个丰富的对SQL的多维扩展。MDX查询允许大量的OLAP特定的函数,它们比ANSI规范更好。只有当数据是用SQL Server Analysis Services 功能来定义的时候,MDX才可以使用,尽管OLAP数据(Cubes)可以存储在SQL Server数据库中,一个专门的OLAP数据存储设备中,或二者结合。
异常处理
DB2 UDB使用标准的SQL PL异常处理工具,叫做handler-types。支持的handler types包括CONTINUE,EXIT,和UNDO handlers。这三种一般支持的条件是SQL EXCEPTION xxxxx,SQL WARNING nnnnn (其中nnnnn为一个指定的SQLSTATE代码),和NOT FOUND。这些handlers可以指定一个单独的SQL语句或一个SQL代码块。错误可以在handler代码的内部或外部,被SIGNAL和RESIGNAL。
SQL Server 2005使用TRY-CATCH结构。这很像C++,.NET,和Java之类的语言。在SQL Server 2005中,您可以定义用户特定的错误,并在CATCH块的内部或外部,使用RAISERROR Transact SQL语句发送他们,虽然您不能重新抛出一个错误。还有一些特殊的系统定义的函数,它们在CATCH块内部执行,并返回语义丰富的错误信息和进程中的事务状态。
函数类型
SQL Server 2005和DB2 UDB 8.2都支持质类型和表值类型的函数。DB2 UDB 8.2支持基于OLE DB表函数。在SQL Server 2005中,表函数从其他数据源中返回数据,它是通过连接的服务器和4部分的表名实现的。
当用户定义函数使用基本表作为输入时,SQL Server有一种特殊的语法来实现一个基本表和一个用户定义函数之间的JOIN。通过使用CROSS APPLY和OUTER APPLY语法,可以支持INNER 和OUTER JOIN。UDF可以使用来自选择的表值的列作为参数。这些函数早期的用户报告说,一个单一的CROSS APPLY可能一大块基于游标的Transact SQL代码。而这些功能在DB2 UDB 8.2中不可用。
DB2 UDB 8.2扩展了用户定义函数的概念,它通过在CREATE FUNCTION语句中指定MODIFIES SQL DATA从句,允许在函数中修改数据。
[ 本帖最后由  于 2008-1-21 17:51 编辑 ]



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


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

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2008-1-21 17:58 


QUOTE:
附加的开发人员的工具和架构
SQL Server 2005和DB2 UDB都包含附加的工具,提供与其它数据源离线的集成,在线分析处理(OLAP),提取、转换和加载能力。对于SQL Server 2005,这个功能和数据库是捆绑在一起的,而对于DB2 UDB,这些功能可能是捆绑的或是单独出售。例如,DB2的OLAP服务器是一个单独的产品,SQL Server Analysis Services是包括在SQL Server 2005产品中的一部分。

虽然这些附加的开发人员的工具几乎提供了相似的功能,但是SQL Server 2005提供了一些DB2产品家族中没有的附加工具。SQL Server Reporting Services是一个基于Web Service的系统,用来进行报表设计,生成,存储,和发布。SQL Server Notification Services是一个应用程序平台,用来建立可靠的,可伸缩的应用程序,并通过不同的分配通道通知终端用户感兴趣的事件。例如,一个银行可能使用SQL Server Notification Services来告知一个信用卡消费者,在消费者的信用卡上正在进行一笔大于他们预定金额的收费。


QUOTE:
下表列出了附加的相关产品。



下表列出了为开发提供的附加工具和附加功能的支持。注意一些附加的工具不能在DB2 UDB 8.2中使用,而更多的是用第三方工具。



比较汇总





















QUOTE:
关于作者
Bob Beauchemin是一个以数据为中心应用程序的实践者和架构师,讲师,课程作者。他在以数据为中心的分布式系统上拥有超过二十五年的经验,并且现在在SQLSkills做开发技术的指导。他是"A First Look at SQL Server 2005 For Developers"的主要作者,"Essential ADO.NET"的作者,并且发表了许多关于数据访问和数据库的文章。



版权说明

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

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

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

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

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

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

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

Microsoft、Visual Basic、Visual Studio、Windows、和 Windows Server是 Microsoft Corporation 在美国和/或其它国家/地区的注册商标或商标。

本文档中提到的真实公司和产品的名称均是各自所有者的商标。
[ 本帖最后由  于 2008-1-21 18:00 编辑 ]



最全面的资料《SQL Server数据管理》
2008-1-21 17:583楼
[ 顶部 ]
 
fisker2008
新新人类  点击可查看详细



帖子 11
精华 0
无忧币 25
积分 19
阅读权限 20
来自 (保密)
注册日期 2007-7-20
最后登录 2008-2-21 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-1-21 18:15 
学习中,从事这方面的工作尤其需要掌握第一手的资料!



论坛活动:测测你对IT技术大会的了解指数(赠微软礼品、无忧币)
2008-1-21 18:154楼
[ 顶部 ]
     
论坛跳转:  

| | |

| | |

| | |

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