SQL Server基础
2024-08-31 00:47:57
供稿:网友
1.1. sql server的发展历程
sql server是microsoft公司的一个关系数据库管理系统,但说起它的历史,却得从sybase开始的。sql server从20 世纪80年代后期开始开发,最早起源于1987年的sybase sql server。sql server最初是由microsoft、sybase 和ashton-tate三家公司共同开发的,1988年,microsoft公司、sybase公司和aston-tate公司把该产品移植到os/2上。后来aston-tate公司退出了该产品的开发,而microsoft公司、sybase公司则签署了一项共同开发协议,这两家公司的共同开发结果是发布了用于windows nt操作系统的sql server,1992年,将sql server移植到了windows nt平台上。
在sql server 4版本发行以后,microsoft公司和sybase公司在sql server的开发方面分道扬镳,取消了合同,各自开发自己的sql server。microsoft公司专注于windows nt平台上的sql server开发,而sybase公司则致力于unix平台上的sql server的开发。本文中介绍的是microsoft sql server 以后简称为sql server或ms sql server。
sql server6.0版是第一个完全由microsoft公司开发的版本。1996年,microsoft公司推出了sql server 6.5版本,接着在1998年又推出了具有巨大变化的7.0版,这一版本在数据存储和数据库引擎方面发生了根本性的变化。又经过两年的努力开发,microsoft公司于2000年9月布了sql server 2000,其中包括企业版、标准版、开发版、个人版四个版本。从sql server 7.0到sql server 2000的变化是渐进的,没有从6.5到7.0变化那么大,只是在sql server 7.0的基础上进行了增强。
1.2. sql server 2000的特性1.2.1. internet 集成
sql server 2000 数据库引擎提供完整的 xml 支持。它还具有构成最大的 web 站点的数据存储组件所需的可伸缩性、可用性和安全功能。sql server 2000 程序设计模型与 windows dna 构架集成,用以开发 web 应用程序,并且 sql server 2000 支持 english query 和 microsoft 搜索服务等功能,在 web 应用程序中包含了用户友好的查询和强大的搜索功能。
1.2.2. 可伸缩性和可用性
同一个数据库引擎可以在不同的平台上使用,从运行 microsoft windows® 98 的便携式电脑,到运行 microsoft windows 2000 数据中心版的大型多处理器服务器。sql server 2000 企业版支持联合服务器、索引视图和大型内存支持等功能,使其得以升级到最大 web 站点所需的性能级别。
1.2.3. 企业级数据库功能
sql server 2000 关系数据库引擎支持当今苛刻的数据处理环境所需的功能。数据库引擎充分保护数据完整性,同时将管理上千个并发修改数据库的用户的开销减到最小。sql server 2000 分布式查询使您得以引用来自不同数据源的数据,就好象这些数据是 sql server 2000 数据库的一部分,同时分布式事务支持充分保护任何分布式数据更新的完整性。复制同样使您得以维护多个数据复本,同时确保单独的数据复本保持同步。可将一组数据复制到多个移动的脱接用户,使这些用户自主地工作,然后将他们所做的修改合并回发布服务器。
1.2.4. 易于安装、部署和使用
sql server 2000 中包括一系列管理和开发工具,这些工具可改进在多个站点上安装、部署、管理和使用 sql server 的过程。sql server 2000 还支持基于标准的、与 windows dna 集成的程序设计模型,使 sql server 数据库和数据仓库的使用成为生成强大的可伸缩系统的无缝部分。这些功能使您得以快速交付 sql server 应用程序,使客户只需最少的安装和管理开销即可实现这些应用程序。
1.2.5. 数据仓库
sql server 2000 中包括析取和分析汇总数据以进行联机分析处理 (olap) 的工具。sql server 中还包括一些工具,可用来直观地设计数据库并通过 english query 来分析数据。
1.3. sql server 2000 的各种版本所支持的操作系统
microsoft sql server 2000 版本支持的运行服务器软件的操作系统
操作系统
企业版
标准版
个人版
开发版
desktop engine
sql server
ce
企业评估版
microsoft windows 2000 datacenter
支持
支持
支持
支持
支持
暂缺
支持
windows 2000 advanced server
支持
支持
支持
支持
支持
暂缺
支持
windows 2000 server
支持
支持
支持
支持
支持
暂缺
支持
windows 2000 professional
暂缺
暂缺
支持
支持
支持
暂缺
支持
microsoft windows nt 4.0 server 企业版
支持
支持
支持
支持
支持
暂缺
支持
windows nt 4.0 server
支持
支持
支持
支持
支持
暂缺
支持
windows nt 4.0 workstation
暂缺
暂缺
支持
支持
支持
暂缺
支持
microsoft windows 98
暂缺
暂缺
支持
暂缺
支持
暂缺
暂缺
microsoft windows ce
暂缺
暂缺
暂缺
暂缺
暂缺
支持
暂缺
说明 来自除 sql server windows ce 外的所有 sql server 2000 版本的客户端软件可在任何版本的 microsoft windows nt、microsoft windows 2000 和 microsoft windows 98 上运行。只有服务器组件(如数据库引擎和分析服务器)必须在特定版本的操作系统上使用。例如,虽然 sql server 2000 企业版不在 windows 2000 professional、windows nt workstation 或 windows 98 上运行,但是也能使用 sql server 2000 企业版光盘在这些操作系统上安装客户端软件。sql server 2000 中文版不支持英文版的 nt 4.0 企业版。
来自 sql server ce 的所有软件以独占方式在 windows ce 操作系统上运行。
1.4. 微软未来的“灵魂”—sql server 2005探密1.4.1. 杀手代号“yukon”
从1989年微软公司发布的sql server 1.0到现在已经有足足十五个年头了,在这十五年里sql server从无到有,从小到大,经历着一次又一次的传奇。它不但蚕食着ibm、oracle数据库的市场份额,而且新一代的sql server已经开始逐渐成为windows操作系统未来的核心。而访华的比尔•盖茨嘴里不断重复的“无缝计算”的核心就是yukon,这个代号“yukon”的下一代数据库将会把我们带进一个什么样的世界呢?
1.4.2. internet的“软”支柱
在当今的网络时代中,数据查寻、数据存储、数据分类等等所有这一切已经成为了构成internet网络的“软”支柱,而数据库系统则是这个支柱中最关键的。如果没有数据库的支持,我们根本不可能在google或者百度中查找自己需要的信息,也不可能使用快捷方便的电子信箱,可是说,网络世界完完全全是一个大的数据库所构成的。
根据idc的最新数据显示,全球数据库软件市场似乎波澜再起,2003年的总收入达到了136亿美元,比2002年的126亿美元又有增长。甲骨文、ibm和微软目前控制着75%的市场份额。甲骨文去年的市场份额为39.8%,ibm为31.3%,微软为12.1%。
那么什么是数据库呢?在大学的计算机教科书中,数据库是被这样解释的:数据库是计算机应用系统中的一种专门管理数据资源的系统。数据有多种形式,如文字、数码、符号、图形、图像以及声音等。数据是所有计算机系统所要处理的对象。人们所熟知的一种处理办法是制作文件,即将处理过程编成程序文件,将所涉及的数据按程序要求组织成数据文件,用程序文件来调用。数据文件与程序文件保持着一定的对应关系。在计算机应用迅速发展的情况下,这种文件式方法便显出不足。比如,它使得数据通用性差,不便于移植,在不同文件中存储大量重复信息、浪费存储空间、更新不便等。数据库系统便能解决上述问题。数据库系统不从具体的应用程序出发,而是立足于数据本身的管理,它将所有数据保存在数据库中,进行科学的组织,并借助于数据库管理系统,以它为中介,与各种应用程序或应用系统接口,使之能方便地使用数据库中的数据。
这段说明介绍的确非常详细,不过你可能看得头晕眼花了,其实简单地说数据库就是一组经过计算机整理后的数据,存储在一个或多个文件中,而管理这个数据库的软件就称之为数据库管理系统。一般一个数据库系统(database system)可分为数据库(database)与数据管理系统(database management system,dbms)两个部分,所有的这些就是构成互联网“软”支柱的全部。
微软的sql server作为众多数据库软件的一种,在从6.5升级到7.0版本后,开始逐步地成为主流数据库软件,而sql server 2000更证明了windows操作系统中同样可以承担高端数据应用,作为商务应用的主流数据库管理软件,它打破了由unix统治大型数据库软件的神话,而新一代的sql server 2005又会有什么样的改变呢?
1.4.3. 直击yukon核心机密
在microsoft sql server下一版本(代号为“yukon”)的规划阶段,考虑更多的是数据库未来发展以及sql server的编程能力。microsoft内部的开发人员很早就意识到,未来必须引入更加统一的编程模型,还要为不同的数据模型提供更多的灵活性。编程模型的统一就意味着普通的数据访问和操作任务可以通过多种途径进行,例如你可以选择使用xml或microsoft.net框架或者transact-sql(t-sql)代码等。
这种规划带来的结果就是一个新的数据库编程平台,它在许多方面都进行了扩展。首先,宿主.net框架公共语言运行库(clr)的功能将数据库扩展到过程化编程和托管代码的领域。其次,.net框架宿主集成提供了来自sql server内部强大的对象数据库功能。对xml的深入支持是通过功能完善的xml数据类型实现的,它拥有关系数据类型的所有功能。此外,还添加了对xml查询(xquery)和xml架构定义语言(xsd)标准的服务器端支持。最后,sql server yukon包含了t-sql语言的重要增强功能。
xml在sql server yukon中的历史实际上始于sql server 2000。sql server 2000引入了以xml的格式返回关系型数据,大量加载和切分xml文档,以及将数据库对象公开为基于xml的web服务等功能,不过yukon提供了更高级的xml查询功能,完善后的yukon将会充分的发挥xml的所有优势。xml为什么如此关键呢?其实xml从最初的一种替代html的表示技术发展为一种线路格式,现在又被看做是一种存储格式。xml中的持久存储已经引起了广泛关注,互联网上也出现了许多xml数据类型的应用。xml本身是一种可以跨越任何系统平台的数据表示格式,它最初是作为文档格式使用的,由于xml在大型企业中已经获得了广泛的认可,用户于是开始使用xml解决棘手的业务问题,例如数据集成。这就使得作为数据存储格式的xml不断发展到今天,由于xml可以在任何平台上显示出同样的效果,xml逐渐成为了一种数据库主流存储格式。yukon这种内置对xml全面的支持将会引发一场全新的数据库技术革命。
这些新的编程模型和增强的语言共同创造了一系列的可编程性,它们补充并扩展了目前的关系型数据库模型。这种体系结构带来的最终结果是能够创建更可伸缩、更可靠、更健壮的应用程序,并提高了开发人员的工作效率。这些模型的另外一个结果就是一种称之为sql服务代理的新应用程序框架——用于异步消息传递的分布式应用程序框架。
1.4.4. yukon加盟的世纪豪赌
前面我们絮絮叨叨地讲了一大串技术应用的优势,你此时也许很好奇,我们为什么要介绍这样一个看似是高端应用的数据库软件技术呢?也许现在我们应该揭开谜底了。
地球上最富的人这样预言计算机的未来,他认为,在未来的世界里,每一个普通的计算机都将拥有一个足够大的超级硬盘,到那个时候我们的硬盘不再单纯的是80gb,很可能是80tb,虽然只是一个gb变tb,但这意味着硬盘容量足足提升了1000倍。而以现有的windows存储硬盘数据的ntfs格式来说,根本就无法应付如此大的硬盘数据搜索能力。说一个形象的例子,如果在有100tb硬盘空间的计算机中,你那个时候还是使用的是windows xp,你整理磁盘碎片所需要的时间很可能是两天两夜,如果你想找寻某个文件,你将会足足等上几个小时。这种感觉就好像重新回到286的时代。
为了解决这个棘手的问题,下一代windows操作系统longhorn决定采用与此前的windows截然不同的编程模式。其核心是avalon(开发代号)。avalon是windows的新gui库。新的longhorn导入了indigo(web服务)和winfs(文件系统)的新功能。包括avalon在内,将这三种新功能称作winfx。winfx是longhorn的新型“本地”api。虽然是为了与现在的win32 api兼容而增加的,但要想使用longhorn的新的功能,一般情况下必须使用winfx。winfx属于目前.net framework的延伸。目前.net framework中使用的类,winfx中也有,winfx支持程序的运行机制与.net基本相同。
.net framework将在sql server yukon供货时进行主版本升级(major versionup),具体日期预计在2004年底。yukon将在.net framework上运行。可在存储进程(stored procedures)中使用.net framework的类库。yukon运行的.net framework为2.0版,将追加目前.net framework 1.1没有的多媒体相关类。winfs使用yukon的引擎。也就是说,在longhorn中,文件系统将使用数据库引擎。
这个时候你是否明白了,下一代windows操作系统中,整个文件数据的管理将会引入sql server的结构管理,届时,我们计算机的数据查询能力,数据整合能力将会有极大地提高。当然这对于那个有钱人不断说的“无缝计算”也是至关重要的一步,对微软来说,让数据库软件和操作系统整合的工程无疑一场世纪豪赌,如果成功,微软将会逐渐成数据库的霸主,但是如果失败,这项几乎甚至会拖累下一代windows正常上市的时间表。
1.5. sql server与oracle比较
据来自美国的市场调查,在windows nt数据库软件市场中,世界上最大的软件制造商——微软公司已经超越oracle公司,坐上了头把交椅,在nt数据库市场中,微软公司已与oracle并驾齐驱。
2001年9月,oracle公司推出了自己的新款oracle软件——oracle9i,并在其“think fast,think simple,think smart”的响亮口号中开始了oracle9i的宣传,数据库市场的领头羊——oracle公司又开始了捍卫霸主地位的努力。至此,数据库市场就开始了新一轮的群雄逐鹿的大战。不管是oracle公司,还是微软公司都是世界数一数二的大公司,oracle软件和microsoft sql server软件也都是由世界级开发团队所开发,两个公司都声称自己的软件是最好的,那么,两个软件到底谁优谁劣呢?
microsoft公司无人不晓,其发展过程可概括为“以桌面操作系统为起步,接着大踏步进军服务器软件,现在又全力迈向因特网软件的开发”。1987年进入数据库领域,如今,其产品microsoft sql server所占的市场份额已经仅次于oracle,居世界第二,是世界软件业的领头羊。
提起数据库,第一个想到的公司,一般都会是oracle。oracle公司创立于1977年,最初是一家专门开发数据库的公司,其初衷是建立一个数据库管理系统,而如今,oracle公司已经开发了许多优秀的应用程序和服务程序,远远超越了其初衷,成为了世界第二大软件公司。oracle在数据库领域一直处于领先地位,1984年,首先将关系数据库转到了桌面计算机上。然后,oracle的下一个版本,版本5,率先推出了分布式数据库、客户/服务器结构等崭新的概念。oracle的版本6首创行锁定模式以及对称多处理计算机的支持…… oracle8主要增加了对象技术,成为关系-对象数据库系统,oracle8i增加了internet功能。目前,oracle产品覆盖了大、中、小型机等几十种机型,oracle数据库成为世界上使用最广泛的关系数据系统之一。
作为一个通用的数据库系统,oracle具有完整的数据库功能,这些功能包括存储大量数据、定义和操作并发控制、安全性控制、完整性控制、故障恢复与高级语言接口等。oracle还是一个分布式数据库系统,支持各种分布式功能,特别是支持internet处理。作为一个应用开发环境,oracle提供了一套界面友好、功能齐全的数据库开发工具,使用户拥有一个良好的应用开发环境。oracle使用pl/sql语言提供各种操作具有可开放性、可以执行、可伸缩性等功能。特别是oracle 8i以上版本中,支持面向对象的功能,如支持类、方法、属性等,使得oracle产品称为了一种对象/关系数据库系统。
1.5.1. sql server与oracle产品特性比较1.5.1.1. 数据库操作平台的开放性
oracle能在所有主要的平台(其中包括windows)上运行,并且完全支持所有的工业标准,所以,客户可以利用很多种第三方应用程序、工具、网关和管理实用程序。oracle采用开放策略,它使得客户可以选择一种最适合他们特定需要的解决方案。sql server只在windows上运行,microsoft这种专有策略的目标是将客户锁定到windows环境中,这样做可以说是一把双刃剑,既有利于有不利于sql server的发展及其市场份额。由于sql server紧密的捆绑在windows平台上,所以,只有随着windows操作系统可靠性、开放性以及性能的改善,sql server的开放性和可靠性才能进一步提高。
1.5.1.2. 性能价格比
人们选择数据库产品,当然首先要考虑数据库产品的性能,同时也关心究竟要花多少钱才能建立并运行一套oracle或sql server数据库系统。这些钱不仅包含最初购置软件、硬件的费用,还包含了维护、培训费用。两家公司都宣称自己的性能价格比好,实际上,oracle公司侧重于产品的可靠性和实用性方面,而microsoft公司更侧重于产品价格方面。由于操作系统的原因,普遍认为sql server的可靠性较差,而另一方面oracle的初始花费则相对较高,尤其是在考虑工具软件的因素时,与sql server免费提供工具软件相比,oracle更显价格不菲。所以,在考虑该使用什么软件时,要根据自己的业务需求和基础设施来综合考虑。
1.5.1.3. 工具软件
使数据库易于安装、使用和管理——组合在一起称为“操作简单”——是一个减少成本的关键因素。microsoft产品具有易于使用的美誉,在很多方面也确实如此,sql server就得益于让人感到使用起来比较容易。sql server企业管理器(enterprise manager)是sql server软件的一个组成部分,给用户提供了一个集成的管理控制台来集中管理多个服务器。oracle也由自己的企业管理器,它的性能随着版本的提高有所改善,有些方面甚至超过了sql server企业管理器,但它安装较为困难,有些较好的组件还需另外购买。sql server与windows操作系统无缝集成, microsoft公司总是尽可能将所有的软件功能捆扎在一起,除非用户还需要其他用处的操作软件包,否则功能已足够使用了。而oracle公司将工具软件交给第三方软件商来开发,花费高,尤其在别人的软件免费提供的情况下,这种问题就更显突出。
1.5.1.4. 数据库性能
那种数据库更快?这其实是一个很难回答的问题,因为存在许多不定因素,包括处理类型、数据分布以及硬件基础设施等。2002年2月,microsoft公司宣称sql server 2000 bata2版在windows2000操作系统上运行速度达到227079个事务每分钟最高纪录。oracle公司提出质疑后,microsoft公司收回了测试结果,并于10月份给出了更高的测试结果,几乎是以前的两倍。这种测试在很多方面是有用的,但却并不能说明每个用户应用程序的操作性能。一些经验表明在长时间运行大量事务方面oracle数据库要优于sql server,但在集群技术等方面,sql server比oracle数据库要好一些。
1.5.2. 展望oracle和sql server
oracle9i已经出炉,它增强了针对电子商务的新特性,增强了对因特网应用的支持,提供了对大数据量的在线事务处理(oltp)环境、查询密集型数据仓库以及要求苛刻的互联网应用的高效、可靠及安全的数据管理能力。
sql server 2000的下一代产品yukon预计在今年推出。yukon主要增强的特性大概是集群,每个服务器自己进行数据处理、管理内存、加锁和事务处理,与此同时保持与集群中其他及其的内部联系,能做到集群中一台机器不能工作,不会影响整个系统的工作。
总之,两家公司为了在竞争中占得先机,会不断的开发出更好功能更完善的数据库管理系统。oracle公司的优势在于许多公司都已投资于相关硬件产品与软件产品的开发,microsoft公司本身就是一座大山。到底那家公司会在激烈的竞争中取胜,让我们拭目以待,不管谁胜谁负,受益的永远是用户。