MSSQL:最早版本回顾 从6.5起步

1. MSSQL6.5版本的诞生

MSSQL指的是Microsoft SQL Server,是由Microsoft(微软)开发的一个关系式数据库管理系统(RDBMS)。最早的MSSQL版本可以追溯到1993年,当时微软推出了SSQL Server(即MSSQL6.0的前身)。1996年,微软发布了MSSQL6.5版本。

这个版本的最大特点是支持Unicode字符集,这是当时许多竞争产品所不具备的。此外,MSSQL 6.5还引入了很多新特性,包括存储过程和触发器等。

1.1 存储过程的引入

存储过程是SQL语言中的一种特殊对象,可以将通常需要多次执行的多个SQL语句编写为一个可重复执行的模块,以提高数据库的运行效率。

CREATE PROCEDURE [dbo].[test_sp]

@name varchar(50)

AS

SELECT * FROM test WHERE name = @name

GO

以上是一个简单的存储过程示例,存储过程通过将通常需要多次执行的多个SQL语句编写成一个模块,以减少网络传输和SQL执行的开销。同时可以通过授权限制使用者可以执行的操作,保证数据库的安全性。

1.2 触发器的引入

MSSQL 6.5版本还引入了触发器的概念,触发器是与表相关联的,当特定的SQL语句在表上执行时,触发器将会自动运行相应的逻辑。一般用于实现复杂的业务逻辑,如外键、约束等。

CREATE TRIGGER mytrigger ONMyTable

FOR INSERT

AS

IF(SELECT COUNT(*) FROM MyTable)/2=0

--偶数行

ELSE

--奇数行

GO

2. MSSQL 7.0版本

1998年,微软发布了MSSQL 7.0版本,这个版本对6.5版本进行了大幅度的改进和升级。

2.1 OLAP的整合

MSSQL 7.0版本将“Online Analytical Processing”(OLAP,即在线分析处理)与关系型数据库整合在一起,极大地拓宽了数据库的应用范围。通过OLAP,可以在数据库上完成复杂的分析和处理,得出更高级别的结论和洞见。

2.2 支持XML

与MSSQL 6.5相比,7.0版本还引入了对XML的全面支持。在其之后的版本中,XML一直是MSSQL的重要特性之一。

DECLARE @xmlData XML;

SET @xmlData=

'

1

Microsoft

Visual Studio

';

SELECT T.*

FROM

OPENXML(@xmlData, '/ROOT/Products/Product', 2)

WITH (

BrandName varchar(20) 'BrandName',

ProductName varchar(20) 'ProductName'

) AS T;

3. MSSQL 2000版本

2000年,MSSQL 2000版本的发布,它融合了MSSQL 6.5和MSSQL 7.0版本的功能,并加入了一些全新的特性。其中比较重要的有以下两项:

3.1 数据库分区

MSSQL 2000版本引入了数据库分区的概念,这使得数据库管理员可以将数据库划分为若干独立的子集,以达到管理数据、提高查询效率和提高可用性的目的。

3.2 XML索引

MSSQL 2000版本还引入了XML索引,它可加速XML数据的查询和检索。

CREATE TABLE xmltest (

PurchaseOrderNumber int PRIMARY KEY,

PurchaseOrderXML xml NOT NULL

);

CREATE PRIMARY XML INDEX PXML_xmltest_PurchaseOrderXML

ON xmltest(PurchaseOrderXML);

SELECT * FROM xmltest WHERE PurchaseOrderXML.exists('//Some/Path');

4. MSSQL 2005版本

MSSQL 2005版本的核心是.NET Framework,这使得开发人员无需离开Visual Studio环境,即可访问数据库和开发实施与它们相关联的Web应用程序和服务。

4.1 CLR整合

MSSQL 2005版本将CLR(Common Language Runtime)整合到了数据库中,这是一个可让数据库支持各种语言与运行时操作的框架。通过CLR,可以让MSSQL支持C#、VB.NET等编程语言和.NET库,从而大大拓宽了可编程的范围。

CREATE ASSEMBLY CLR_Procedure

FROM 'C:\CLR_Procedure.dll'

WITH PERMISSION_SET = UNSAFE;

GO

CREATE PROCEDURE myProcedure @myParam Int

AS EXTERNAL NAME CLR_Procedure.UserDefinedFunction;

4.2 XML类型的增强

MSSQL 2005版本的XML类型加入了字符类型转换和XPath表达式支持,这为XML的处理和存储带来了极大的便利。

5. MSSQL 2008版本

虽然MSSQL 2008版本在添加了一些新特性之外没有进行太多变动,但是这些新特性仍然很有价值。

5.1 大小量级数据类型的改进

MSSQL 2008版本引入了容量飞跃,这使得它能够处理更大量级的数据,从而拓宽了其应用范围。

DECLARE @myStr varchar(MAX);

SET @myStr = REPLICATE('A', 2147483647);

SELECT @myStr;

5.2 压缩支持

MSSQL 2008版本还引入了数据压缩支持,这在数据处理和存储时能够大大减少存储的空间。

CREATE TABLE test

(

id INT PRIMARY KEY,

data CHAR(8001)

);

INSERT INTO test SELECT TOP 10000

ROW_NUMBER() OVER (ORDER BY a.number) ID, REPLICATE('A',8001)

FROM

master..spt_values a, master..spt_values b, master..spt_values c, master..spt_values d;

EXEC sp_estimate_data_compression_savings 'dbo', 'test', NULL, NULL, 'ROW';

ALTER TABLE test REBUILD WITH (DATA_COMPRESSION = PAGE);

6. MSSQL 2012版本

MSSQL 2012版本最显著的特征是其云计算能力,通过把MSSQL整合到Windows Azure平台上,用户可以网页服务器内开发、测试和管理自己的数据库了,这使其能够适应当今云计算时代的趋势。

6.1 AlwaysOn的支持

MSSQL 2012版本引入了AlwaysOn高可用性解决方案,它能够提供跨物理主机的数据库高可用性。通过AlwaysOn,可以轻松地在不同位置、不同网络环境下利用多个备用服务器进行互动。

ALTER AVAILABILITY GROUP myGroup ADD DATABASE myDatabase;

GO

6.2 权限的改进

MSSQL 2012版本还增强了权限控制的功能,引入了“用户定义的服务器角色”,用户可使用这个角色自定义特定的操作和权限。

CREATE ROLE myRole AUTHORIZATION dbo;

GRANT EXEC ON myStoredProcedure TO myRole;

GO

7. 总结

自MSSQL 6.5版本的发布,二十多年来,每一代MSSQL都在功能和性能上都做出了显著的进步,从XML的支持、数据库分区、CLR整合到云计算能力的提高,一步步地将MSSQL打造成为了企业数据管理的首选。随着MSSQL不断地改进和演化,它一定会在未来扮演更加重要的角色。

数据库标签