Microsoft SQL Server

數據庫軟件系列

Microsoft SQL Server(微软结构化查询语言伺服器)是由美国微软公司所推出的关系数据库解决方案,最新的版本是SQL Server 2022,已在美国时间2022年11月16日发布。

Microsoft SQL Server
开发者Microsoft
当前版本
  • 2022(2022年11月16日;稳定版本)[1]
编辑维基数据链接
操作系统Microsoft Windows
类型关系数据库管理系统
许可协议Microsoft EULA
网站http://www.microsoft.com/zh-cn/server-cloud/products/sql-server/

数据库的内建语言原本是采用美国标准局国际标准组织所定义的SQL语言,但是微软公司对它进行了部分扩充而成为作业用SQL

几个初始版本适用于中小企业数据库管理,但是近年来它的应用范围有所扩展,已经触及到大型、跨国企业数据库管理

历史渊源

SQL Server一开始并不是微软自己研发的产品,而是当时为了要和IBM竞争时,与Sybase合作所产生的,其最早的发展者是Sybase[2],同时微软也和Sybase合作过SQL Server 4.2版本的研发,微软亦将SQL Server 4.2移植到Windows NT(当时为3.1版),在与Sybase终止合作关系后,自力开发出SQL Server 6.0版,往后的SQL Server即均由微软自行研发。

在与微软终止合作关系后,Sybase在Windows NT上的数据库产品原本称为Sybase SQL Server,后来改为现在的Sybase Adaptive Server Enterprise

版本演进

版本 年份 发布名称 代号 内部版本号
1.0
(OS/2)
1989年 SQL Server 1.0 -
4.21
(WinNT)
1993年 SQL Server 4.21 -
6.0 1995年 SQL Server 6.0 SQL95
6.5 1996年 SQL Server 6.5 Hydra
7.0 1998年 SQL Server 7.0 Sphinx
- 1999年 SQL Server 7.0
OLAP工具
Plato
8.0 2000年 SQL Server 2000 Shiloh 539
8.0 2003年 SQL Server 2000
64-bit版本
Liberty 539
9.0 2005年 SQL Server 2005 Yukon 611/612
10.0 2008年 SQL Server 2008 Katmai 655
10.25 2009年 SQL Azure CloudDatabase -
10.50 2010年 SQL Server 2008 R2 Kilimanjaro(aka KJ) 661
11.0 2012年 SQL Server 2012 Denali 706
12.0 2014年 SQL Server 2014 782
13.0 2016年 SQL Server 2016 852
14.0 2017/09/29 SQL Server 2017 Helsinki 869
15.0 2019/11/4 SQL Server 2019 Seattle 895

SQL Server 1.0 & 1.1

SQL Server的发源最早要回到1986年,当时微软已和IBM合作开发OS/2(当时为了要继承MS-DOS)操作系统,但由于缺乏数据库的管理工具,而IBM也打算将其数据库工具放到OS/2中销售之下,微软和Sybase合作,将Sybase所开发的数据库产品纳入微软所研发的OS/2中,并在获得Ashton-Tate的支持下,第一个挂微软名称的数据库伺服器Ashton-Tate/Microsoft SQL Server 1.0于1989年上市。

不过在1989-1990年间,由于Ashton-Tate的dBase IV计划不顺,让微软原本打算由dBase IV来开发SQL Server应用程式的计划变得无法实现,因此微软终止与Ashton-Tate的合约,真正挂微软单一品牌的Microsoft SQL Server 1.1于1990年中出货。同一年,微软为SQL Server建立技术支持团队,并于1991年初起陆续获取Sybase的授权,有权利可以查看与修改SQL Server的原始代码。虽然主控权仍在Sybase,微软的任何修正都需要由Sybase查看并且同意后才可以执行,但这个里程碑对日后微软开始发展自己的数据库伺服器时,在数据库引擎的发展上,提供了相当重要的基础。

然而在OS/2的销售状况不佳下,SQL Server 1.0/1.1/1.11(后续发布的1.1升级版)的销售状况都不佳[2]

SQL Server 4.2

1992年,由Sybase与微软共同发表SQL Server 4.2版,微软在此版本中的贡献为:

  1. 与Sybase合作,将Sybase的SQL Server核心代码移植到OS/2中。
  2. 提供MS-DOS,Windows以及OS/2的客户端函数库(Client Library)。
  3. 开发部分管理工具。

不过SQL Server 4.2一开始并不是以32位为基础,而是以16位为基础开发。

SQL Server for Windows NT

在1992年时,由于市场上对32位操作系统的需求逐渐升高,但IBM的OS/2 2.0却又没有如期在时程内完成,SQL Server的开发小组利用OS/2的32位接口移植SQL Server到OS/2 2.0(当时为beta)测试时,发现32位并没有如预期来的有效率,另外一方面,微软内部当时也正在开发新一代操作系统(即Windows NT),使得SQL Server团队决定要终止对SQL Server for OS/2的发展,同时挹注全力开发出支持Windows NT的版本,代号为“SQL NT”。

在SQL NT中,微软将SQL Server 4.2的核心代码,以Win32 API翻写,并于1993年Windows NT 3.1出货后30天,完成SQL Server for Windows NT(4.2)的开发工作,在市场上销售[2]

SQL Server 4.2是第一个Windows NT上的SQL Server,也是第一个出现在微软认证考试中的SQL Server产品。

SQL Server 6.0

在微软利用SQL Server 4.2 for Windows NT赚取高额营收(自SQL Server 4.2 for Windows NT发行起九个月内,微软SQL Server带来的营收已成长两倍)时,对于其合作伙伴Sybase而言,微软的SQL Server已不被Sybase所重视(Sybase自己要关注在自家的产品线),并且因为SQL Server的权利在Sybase手中(1987年与Sybase签订的合约),微软无法在SQL Server中自行添加与修改功能。

微软自SQL Server 1.0到4.2 for Windows NT,数个版本的历程中,其SQL Server团队已经大幅成长,但受限于与Sybase的合约,微软即使有新研发的Windows NT功能,也无法加入SQL Server中,因此于1994年4月12日,微软和Sybase正式终止了合作关系(并向Sybase买下了Windows版本的SQL Server代码著作权),微软获得了对SQL Server代码的完全控制权,不过挑战也接踵而来——Sybase即将于年底发表System 10 for Windows NT,微软必须要提出新的版本计划,以防止Sybase将原本的微软客户抢走,“SQL 95”计划这样产生了。

SQL 95的命名是仿自Windows 95,也就是新一代的数据库伺服器软件,此版本于1994年10月发布第一个beta版本,并且后续又发布了不同的beta修正版,其中较引人注目的是首次出现在SQL Server中的“复制”(Replication)功能,复制功能所需要的“可滚动式资料光标”(scrollable-cursor),以及其管理工具(代号为“Starfighter”,即SQL Enterprise Manager)。

SQL Server 6.0(SQL 95)于1995年6月14日完成并进入RTM(released to manufacturing),对于SQL Server团队以及微软来说,SQL Server 6.0是重要的里程碑,因为此版本是完全由微软自行开发,未假手Sybase或其他厂商,因此SQL Server 6.0的发行,让微软的数据库研发能力正式被外界认可[2]

SQL Server 6.5发布于1996年,约于SQL Server 6.0发表后十个月后发行[2]

SQL Server 7.0

当微软正在发展SQL Server 6.5时,已经另外有一个团队正在发展新的数据库,由于微软计划要能够让此种数据库引擎能够具有可向上发展,亦可以缩小到PC或手提电脑中,因此数据库的核心必须要重新撰写,这就会涉及数据结构的改变,为了要让数据库的升级能够确保其稳定性,微软在1997年特别邀请1000个组织备份数据库,交由开发小组进行升级,并且在升级过程中找出可能的失败原因。同时在1998年2月起,微软与ISV合作发展运行于SQL Server 7.0的软件,除了保持兼容性外,也让ISV能够特别为SQL Server 7.0的特性撰写程序。

在同一时间,OLE DB的技术,以及很多人熟知的MSDE(Microsoft Data Engine)也在研发中,后来OLE DB成为Windows平台上资料存取的显学,其上的ADO更获得多数开发人员的采用。而MSDE也做为Microsoft Access数据库外的另一种单机数据库的选择。

SQL Server 7.0最终冻结版本为7.00.623.07,于1998年12月进入RTM[2]

SQL Server 2000

原本SQL Server 2000只是SQL Server 7.0的一个小改款,代号为“Shiloh”,版本号码为7.5;真正要做大翻修的SQL Server版本,代号则是“Yukon”。Shiloh在开发过程中,因为要加入的功能并不多,只是要完成在7.0版中没有写完的功能,并且预期可能升级的客户不多,因此当时在微软内部,只是把Shiloh视为是一个“Super Service Pack”而已,有如SQL Server 6.0和6.5的角色。

不过因为几个因素,让SQL Server 7.5摆脱“Super Service Pack”的束缚:

  1. SQL Server 7.0 Service Pack 2已经发表,无需再开发一个Service Pack。
  2. 来自客户对于性能以及在数据仓库中对星状拓朴支持的分割查看与优化的要求。
  3. 来自于竞争者Oracle的压力。

在微软决定要把时程展延到18个月(完整的软件周期)时,也开始为SQL Server 7.5加入新的功能,版本代码升级到8.0(最终版本为8.0.194),同时因应当时Windows 2000的计划,Microsoft BackOffice也命名为BackOffice 2000,故SQL Server 8.0也改名为SQL Server 2000。

SQL Server 2000于2000年8月6日完成,并于2000年8月9日进入RTM状态[2]

SQL Server 2000可说是微软数据库伺服器中“生命期最久”(自2000年8月9日RTM开始到2005年11月SQL Server 2005上市为止,长达五年又三个月),而且后续添加的新功能相当多,Service Pack也最多(最后的Service Pack为SP4)的版本,诸如:

  1. SQL Server 2000 Notification Services
  2. SQL Server 2000 Reporting Services
  3. SQL Server 2000 Web Administration
  4. SQL Server 2000 XML(SQLXML)

同时,它也是第一个出现在Windows CE上的SQL Server。

SQL Server 2005

SQL Server 2005(代号为“Yukon”)在千呼万唤下终于在2005年11月,与Visual Studio 2005一起发表,在SQL Server 2005的研发过程中,其实并不顺利。

SQL Server“Yukon”在2003年底左右就发表了Beta 1,虽然已经有数据库以及部分的新功能,但由于太多的调试码(当时SQL Server作为CLR Hosting基底的.NET Framework 2.0也正在研发中),让执行速度变得很慢。一直到2004年中左右才发布Beta 2,此版本的稳定度就高些,在Beta 2和Beta 3之间,每一至三个月左右就会发布一个测试版本,由于并不是达到特定功能或特定时程的测试版,因此都以“CTP”(Community Technology Preview)的方式发行(现在广泛运用于各微软的产品测试版本中),Beta 2和Beta 3之间相距几乎一年,2005年6月才发布Beta 3,此时整个环境才大致底定下来。

SQL Server 2005具代表性的新功能有[3]

  1. SQL Server管理工具的改变,SQL Server Management Studio(SSMS)取代SQL Server Enterprise Manager。
  2. 将商业智慧的开发功能由SQL Server Enterprise Manager切出,加入Visual Studio中,即Business Intelligence Development Studio(BIDS)。
  3. 新增多种Transact-SQL指令,例如PIVOT/UNPIVOT,Common Table Expression(CTE)等等。
  4. 强化XML的处理能力,并新增原生的XML资料类型,以及支持原生XML资料类型的XML查询运算符。
  5. 新增varchar(max),nvarchar(max),varbinary(max)型资料类型,用来取代text、ntext与image类型。
  6. 将.NET Framework功能植入数据库引擎中(SQL CLR),让VB.NET和C#可以开发SQL Server Stored Procedure,Function,User-Defined Type等。
  7. 原本的DTS改名为SQL Server Integration Services,强化其ETL(Extract, Transform and Load)功能。
  8. Data Mining新增到八种算法。
  9. 数据库引擎的安全性功能大幅强化,引入主体(Principal),结构(Schema)以及资料层次的加解密。
  10. 对于数据结构变更的触发程序支持(DDL Trigger)。

除了伺服器版本的改变外,MSDE也正式由SQL Server Express所接替,作为SQL Server 2005核心的微型数据库伺服器,并且在随后的版本,也添加了SQL Server Express Reporting Service以及SQL Server Management Studio Express等小工具,让SQL Server Express比MSDE更好管理。

SQL Server 2008

SQL Server 2008在2008年8月6日正式发表,并且同时发布SQL Server 2008 Express版本,研发代号为“Katmai”,作为SQL Server 2005的功能强化版本,其主要的新功能[4]与特色有:

  • 以原则为主(Policy-Based)的管理基础架构。
  • 与Windows Server 2008、Windows Vista的Data Collector技术集成的Performance Data Collection。
  • 可以经由管理者设置以调整执行资源的资源调节器(Resource Governer)。
  • 可预测的查询性能。
  • 资料压缩能力。
  • DDL(资料定义语言)审核能力。
  • 透通式资料加密(Transparent Data Encryption)
  • 记录档资料流压缩(Log Stream Compression)
  • ADO.NET Object Services的直接支持,这代表SQL Server 2008可支持LINQ和ADO.NET Entity Framework。
  • 原生的DATE和TIME分割的资料类型,并且支持时间位移的DATETIMEOFFSET和更精确的DATETIME2资料类型。
  • FILESTREAM资料类型:将大型二进制资料存到NTFS文件系统中(即不直接存在数据库中)。
  • 稀疏字段(Sparse Column)的支持,可节省因为NULL值所占据的存储空间。
  • 空间资料类型集,包含geometry(平面或Euclidean(平面地球)资料)以及geography(椭圆体(圆形地球)资料),分别可存储平面和立面型的资料,有助于GIS型系统的开发。
  • 变更资料收集与捕捉(Change Data Capture)。
  • 宽资料表(Wide table),可以容纳最高30,000个字段,但必须要配合Sparse字段使用。
  • hierarchyid数据类型,可以允许存储层次结构化的资料。
  • MERGE语句,可根据与来源资料表联结的结果,在目标资料表上执行插入、更新或删除作业,其功能与ADO.NET中的DataSet.Merge()方法类似。
  • Report Server应用程式嵌入能力。
  • Reporting Service可支持窗体验证。
  • 预测分析能力(SSAS)。
  • 资料表型参数与变量,可以在变量或参数中使用table的类型。

SQL Server 2008比起以往版本存在以下优势: (1)保护数据库查询 (2)在伺服器的管理操作上花费更少的时间 (3)增加应用程式稳定性 (4)系统执行性能优化与预测功能

SQL Server 2008 R2

SQL Server 2008 R2在2010年4月21日正式发表,并且同时发布SQL Server 2008 R2 Express版

SQL Server 2012

SQL Server 2012在2012年3月6日正式发表。提供标准、企业、智慧商务三种版本。

SQL Server 2014

SQL Server 2014在2014年4月1日正式发表。

Windows Azure SQL Database

SQL Azure是微软Windows Azure Platform上的云端关系数据库服务(Database as a Service),早期被称为SQL Server Data Services或SQL Services,应用程式可以直接利用TDS over SSL来存取SQL Azure中的数据库,同时SQL Azure基于Windows Azure平台之上,亦具有与Windows Azure相同的高可用性(High Availability),高延展性 (High Extensibility)以及高扩展性(High Scalability)。

在Windows Azure的2012年度Spring Release时,进行了品牌重整,将SQL Azure纳入Windows Azure产品线下,改名为Windows Azure SQL Database

SQL Server 2016

已在2016年6月1日发布。[5]

SQL Server 2017

已在美国时间2017年10月2日发布。[6]

SQL Server on Linux

微软公司于2016年3月8日发布封闭预览测试版的SQL Server on Linux,预定于2017年上市。此为SQL Server推出27年以来,再次支持Windows以外的操作系统。[7]

2017年10月,SQL Server 2017 on Linux作为SQL Server 2017的多操作系统版本已发布。[8]

SQL Server 2019

已在2019年11月4日发布。[9]

SQL Server 2022

已在 2022 年 11 月 16 日发布,RTM 版本为 16.0.1000.6。

架构

服务

数据库管理工具

  • SQL Server Management Studio
    SQL Server默认的数据库管理工具,随着SQL Server安装时勾选客户端的选项而安装。
  • Navicat for SQL Server[10]
    是一套专为Microsoft SQL Server设计的强大数据库管理及开发工具。它可以用于任何版本的 SQL Server数据库,并支持大部分 SQL Server的功能,包括触发器、索引、查看等。断点。

对编程的支持

  • T-SQL语法写SQL存储程序或SQL预存函数。[11]
  • ODBCOLE DB 支持。
  • SQL Server Native Client,SQL Server 的原生客户端组件,也是 ODBC 和 OLE DB 驱动程式的提供者。[12]SQL Server 2012 起废除。[13]
  • 自SQL Server 2005以后,以SQL CLR支持使用C#VB.NET撰写外挂的DLL档,来扩展原本TSQL语法所欠缺的功能。[14]
  • sqlcmd来提供在批处理文件执行SQL命令的功能。[15]
  • ASP,可以经由ADO对于SQL Server进行存取。[16]
  • ASP.NET,可以经由ADO.NET对于SQL Server进行存取。[17]
  • JavaJSP,可以经由JDBC对于SQL Server进行存取。[18]
  • PHP,可以经由PDO对于SQL Server进行存取。[19]

版本

SQL Server依功能的不同,分成下列的版本:

参考文献

引用

  1. ^ Explore SQL Server 2022 capabilities. [2023年1月6日]. 
  2. ^ 2.0 2.1 2.2 2.3 2.4 2.5 2.6 The Evolution of Microsoft SQL Server: 1989 to 2000 (PDF). [2008-08-20]. (原始内容存档 (PDF)于2011-11-25). 
  3. ^ SQL Server 2005 Top 30 Features. [2008-09-13]. (原始内容存档于2008-04-30). 
  4. ^ SQL Server 2008 New Features. [2008-09-13]. (原始内容存档于2011-07-04). 
  5. ^ What's new in SQL Server 2016. [2017-10-14]. (原始内容存档于2017-10-14). 
  6. ^ What's new in SQL Server 2017. [2017-10-14]. (原始内容存档于2017-10-14). 
  7. ^ 微軟擁抱Linux,SQL Server明年中將推出Linux版本. [2016-03-08]. (原始内容存档于2019-07-24). 
  8. ^ What's new for SQL Server 2017 on Linux. [2017-10-14]. (原始内容存档于2017-10-14). 
  9. ^ SQL Server 2019 (15.x) 的新功能. [2021-01-21]. (原始内容存档于2021-01-28). 
  10. ^ Navicat for SQL Server. [2010-12-14]. (原始内容存档于2010-12-16). 
  11. ^ Transact-SQL Reference (Transact-SQL). Microsoft. [2014-05-14]. (原始内容存档于2014-11-13). 
  12. ^ 数据访问技术路线图. Microsoft. [2016-10-29]. (原始内容存档于2017-08-12). 
  13. ^ SQL Server Native Client (ODBC). Microsoft. [2016-10-29]. (原始内容存档于2016-10-30). 
  14. ^ Introduction to SQL Server CLR Integration. Microsoft. [2014-05-14]. (原始内容存档于2014-02-27). 
  15. ^ Use the sqlcmd Utility. Microsoft. [2014-05-14]. (原始内容存档于2014-03-21). 
  16. ^ Using ADO with SQL Server Native Client. Microsoft. [2014-05-14]. (原始内容存档于2014-03-20). 
  17. ^ SQL Server and ADO.NET. Microsoft. [2014-05-14]. (原始内容存档于2013-11-27). 
  18. ^ Microsoft JDBC Driver 4.0 for SQL Server. Microsoft. [2014-05-14]. (原始内容存档于2020-12-02). 
  19. ^ Microsoft Drivers 3.0 for PHP for SQL Server. Microsoft. [2014-05-14]. (原始内容存档于2020-10-27). 

书籍

  • Kalen Delaney (2001). "Inside SQL Server 2000". Microsoft Press. ISBN 0-7356-0998-5.
  • Scalability Experts (2005). "SQL Server 2005 : Changing the Paradigm". Sams ISBN 0-672-32778-3
  • Thomas Rizzo, Adam Machanic, et al (2005). "Pro SQL Server 2005". Apress ISBN 1-59059-477-0
  • Fernando Guerrero, Carlos Eduardo Rojas (2001). "Sql Server Programming By Example", QUE ISBN 0-7897-2449-9
  • Tony Bain, et al (2004). "Beginning SQL Server 2000 DBA From Novice to Professional", aPress ISBN 1-59059-293-X
  • Brian Knight, Kathi Kellenberger, et al (2006). "Professional SQL Server 2005 Integration Services", Wrox ISBN 0-7645-8435-9
  • Buck Woody (2005). "Administrator's Guide to SQL Server 2005". Pearson Education ISBN 0-321-39797-5
  • Mike Gunderloy, Joseph L. Jorden, David W. Tschanz (2006). "Mastering SQL Server 2005", Sybex, ISBN 0-7821-4380-6

外部链接