Microsoft SQL Server

Microsoft SQL Server是由美国微软公司所推出的关联式数据库解决方案，最新的版本是SQL Server 2022，已在美国时间2022年11月16日发布。

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

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

## 历史渊源

SQL Server一开始并不是微软自己研发的产品，而是当时为了要和IBM竞争时，与Sybase合作所产生的，其最早的发展者是Sybase，同时微软也和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.0OLAP工具｜Plato

8.0｜2000年｜SQL Server 2000｜Shiloh｜539

8.0｜2003年｜SQL Server 200064-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

16.0｜2022/11/16｜SQL Server 2022｜Dallas

### 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升级版）的销售状况都不佳。

### SQL Server 4.2

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

- 与Sybase合作，将Sybase的SQL Server核心程式码移植到OS/2中。
- 提供MS-DOS，Windows以及OS/2的用户端函式库（Client Library）。
- 开发部分管理工具。

不过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）的开发工作，在市场上销售。

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的发行，让微软的数据库研发能力正式被外界认可。

SQL Server 6.5发布于1996年，约于SQL Server 6.0发表后十个月后发行。

### 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。

### 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”的束缚：

- SQL Server 7.0 Service Pack 2已经发表，无需再开发一个Service Pack。
- 来自客户对于效能以及在资料仓储中对星状拓朴支援的分割检视与最佳化的要求。
- 来自于竞争者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状态。

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

- SQL Server 2000 Notification Services
- SQL Server 2000 Reporting Services
- SQL Server 2000 Web Administration
- 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具代表性的新功能有：

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

- 以原则为主（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日发布。

### SQL Server 2017

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

### SQL Server on Linux

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

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

### SQL Server 2019

已在2019年11月4日发布。

### SQL Server 2022

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

从 SQL Server 2022 (16.x) 开始，R、Python 和 JAVA 的执行阶段将不再随 SQL 安装程式一起安装。相反地，请安装任何所需的自订执行阶段和套件。

### SQL Server 2025

2024 年 11 月 19 日微软发布 SQL Server 2025: Enterprise AI-ready database from ground to cloud

参考 : Announcing Microsoft SQL Server 2025: Enterprise AI-ready database from ground to cloud - Microsoft SQL Server Blog

## 数据库管理工具

- SQL Server Management Studio(SSMS)
- SQL Server 数据库管理工具，需另外安装，微软团队自行开发且功能强大的GUI。绝大多数功能都可以由SSMS完成。Download SQL Server Management Studio (SSMS) | Microsoft Learn
- Navicat for SQL Server
- 是一套专为Microsoft SQL Server设计的强大数据库管理及开发工具。它可以用于任何版本的 SQL Server数据库，并支援大部分 SQL Server的功能，包括触发器、索引、检视等。断点。

## 对编程的支持

- 以T-SQL语法写SQL预存程序或SQL预存函数。
- ODBC 及 OLE DB 支持。
- SQL Server Native Client，SQL Server 的原生客户端组件，也是 ODBC 和 OLE DB 驱动程序的提供者。SQL Server 2012 起废除。
- 自SQL Server 2005以后，以SQL CLR支援使用C#或VB.NET撰写外挂的DLL档，来扩充原本TSQL语法所欠缺的功能。
- 以sqlcmd来提供在批次档执行SQL命令的功能。
- 在ASP，可以经由ADO对于SQL Server进行存取。
- 在ASP.NET，可以经由ADO.NET对于SQL Server进行存取。
- 在Java或JSP，可以经由JDBC对于SQL Server进行存取。
- 在PHP，可以经由PDO对于SQL Server进行存取。

## 版本

SQL Server依功能的不同，分成下列的版本：

- SQL Server Enterprise Edition：具有企业级功能的SQL Server版本，适用于大型企业以及大型数据库或资料仓储的服务器版本。
- SQL Server Standard Edition：具有标准功能的SQL Server版本，适用于一般企业的服务器版本。
- SQL Server Workgroup Edition：自SQL Server 2000开始才有的版本，专为工作群组或部门所设计，适用于较小规模的组织。
- SQL Server Web Edition：自SQL Server 2008开始才有的版本，专为Web服务器与Web Hosting所设计，功能上较Workgroup Edition少一些。
- SQL Server Express Edition：免费的SQL Server版本，适用于小型应用程序或是单机型应用程序，但在功能上有设限，如只能使用一颗处理器，以及最大数据库大小为4GB等。请见SQL Server Express。
- SQL Server 2008 Express下载地址
- SQL Server 2008 Express
- SQL Server 2008 Express and Advanced Services
- SQL Server 2008 Express with Tools
- MSDE下载地址
- Microsoft SQL Server 2000 Desktop Engine (MSDE 2000) Release A
- SQL Server 2005 Express下载地址
- Microsoft SQL Server 2005 Express Edition with Advanced Services Service Pack 2
- Microsoft SQL Server 2005 Express Edition Toolkit Service Pack 2
- Microsoft SQL Server Management Studio Express Service Pack 2
- Microsoft SQL Server 2005 Express Edition Service Pack 2
- SQL Server Compact Edition：免费的SQL Server版本，专用于移动设备以及Windows CE操作系统。
- SQL Server Developer Edition，具有与SQL Server Enterprise Edition相同的功能，但只授权在开发应用程序与测试之用，也正因为如此，SQL Server Developer Edition的价格只有Enterprise Edition约千分之一而已。
- SQL Server 2014 Developer Edition: 对Visual Studio Dev Essentials会员免费下载

## 参考文献

### 书籍

- 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

## 外部链接

- SQL Server 技术文件,微软官网
- SQL Server 2005知识库/程式设计俱乐部
- 搜寻产品周期
- 高效率SQL Server,
- 早期版本的开发团队版本历史 ,
- SQL Server Worldwide Users Group Help Site ,
- WinFS Team Blog about WinFS rollup into Katmai and other various products ,

## 基本资料

- 开发者：Microsoft
- 操作系统：Microsoft Windows、Linux、Docker
- 类型：关联式数据库管理系统
- 许可协议：Microsoft EULA
- 网站：https://www.microsoft.com/zh-cn/server-cloud/products/sql-server/