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不断地改进和演化,它一定会在未来扮演更加重要的角色。