针对可编程性的增强功能(数据库引擎)
数据库引擎中的可编程性增强功能包括新数据存储功能、新数据类型、新全文搜索体系结构以及对 Transact-SQL 所做的许多改进和添加。
数据存储
表和索引的压缩存储
SQL Server 2008 支持对表、索引和索引视图使用基于行和页格式的磁盘存储压缩。可以单独为每个分区配置分区表和索引的压缩。有关详细信息,请参阅创建压缩表和索引。
FILESTREAM 存储
FILESTREAM 存储使 SQL Server 应用程序能够在文件系统上存储非结构化的数据,比如文档和图像。这样,客户端应用程序在利用丰富的流式 API 和文件系统的性能的同时,还可保持非结构化数据与对应的结构化数据之间的事务一致性。有关详细信息,请参阅设计和实现 FILESTREAM 存储。
新排序规则
SQL Server 2008 引入了新的排序规则,这些规则完全符合 Windows Server 2008 提供的排序规则。该 80 个新排序规则通过 *_100 版本引用表示。这些排序规则为用户提供了语言准确的最新区域性排序约定。有关详细信息,请参阅排序规则和 Unicode 支持和使用排序规则。
分区表和索引的分区切换
将数据分区可以快速、有效地管理和访问数据的子集,同时又能维护整个数据集合的完整性。现在,可以使用分区切换将分区从一个表切换到另一个表,以便快速高效地转移数据子集。
如需了解有关分区切换概念的信息和查看实现分区切换的示例代码,请参阅使用分区切换高效传输数据和定义了索引视图时的分区切换。
稀疏列和列集
稀疏列是其存储格式已针对 Null 值进行优化的普通列。如果列中的值至少有 20% 到 40% 将为 NULL,请考虑使用稀疏列。有关详细信息,请参阅使用稀疏列。
使用稀疏列的表可以指定一个列集以返回表中的所有稀疏列。列集是一种非类型化的 XML 表示形式,它将表的所有稀疏列组合成为一种结构化的输出。有关详细信息,请参阅使用列集。
空间数据存储、方法和索引
空间数据表示有关几何对象的物理位置和形状的信息。这些对象可以是点位置或更复杂的对象,例如国家/地区、公路或湖泊。
有关详细信息,请参阅使用空间数据(数据库引擎)、geometry 数据类型方法引用和 geography 数据类型方法引用。
空间索引可提高对空间对象(空间数据)执行的某些面向集合的操作效率。空间索引可减少需要应用的开销相对较大的空间操作的对象数。有关详细信息,请参阅使用空间索引(数据库引擎)。
宽表
宽表是包含一个或多个列集的表。宽表可以包含多达 30000 个列、1000 个索引和 30000 项统计信息。有关详细信息,请参阅特殊表类型。
数据类型
日期和时间数据类型
SQL Server 2008 引入了四个新的日期和时间数据类型。引入这些类型后,应用程序便可针对日期或时间、增加的年份范围、增加的小数秒精度和时区偏移量支持分别使用不同的数据类型。有关详细信息,请参阅使用日期和时间数据。
hierarchyid 数据类型
SQL Server 2008 引入了系统提供的新数据类型来封装层次结构关系。使用 hierarchyid 作为一种数据类型可创建具有层次结构的表,或引用另一个位置的数据层次结构。通过分层方法,可以使用 Transact-SQL 来查询和处理分层数据。
以下各项便为在其中使用 hierarchyid 类型使存储和查询分层数据变得更为容易的示例:
组织结构
文件系统
项目中的一组任务
语言术语分类
网页间的链接图
相关的 SqlHierarchyId CLR 数据类型可供客户端应用程序使用。有关详细信息,请参阅使用 hierarchyid 数据类型(数据库引擎)。
空间数据类型
SQL Server 2008 引入两个空间数据类型:geometry 和 geography。geometry 数据类型支持平面或欧几里得(平面球)数据。geography 数据类型用于存储椭球面数据,比如 GPS 纬度和经度坐标。这些新数据类型支持存储和操作诸如 Linestrings、点和多边形这样的空间数据对象。有关详细信息,请参阅使用空间数据(数据库引擎)。
用户定义表类型
数据库引擎引入了新的用户定义表类型,该表类型支持将表结构表示为在存储过程和函数中或在存储过程或函数的批处理或正文中使用的参数。可以在用户定义表类型上创建唯一约束和主键。
有关详细信息,请参阅用户定义表类型。
用户定义类型 (UDT)
UDT 的最大大小已增加到 2147483647 字节。
全文搜索
SQL Server 2008 Enterprise 全文搜索引入了新的全文体系结构。全文搜索现已成为数据库的一个完全集成功能。因此,在以下方面,全文搜索的功能已显著增强:
全文目录已集成到数据库中,而不是存储在文件系统中,因此现在移动数据库时将自动移动全文目录。
SQL Server 2005 干扰词已替换为非索引字。非索引字的配置由一组新的非索引字表对象进行管理。这些对象与数据库关联,并与数据库一起移动。这可以保持非索引字配置在管理性操作(比如备份和还原、分离和附加以及用复制数据库向导复制数据库)期间保持不变。有关详细信息,请参阅非索引字和非索引字表。
因为与其他重要查询组件(比如查询优化器)集成,在一些特定场景中,查询和索引性能已大幅提升。有关详细信息,请参阅全文索引的性能优化。
新增的工具可帮助您了解全文索引的原始内容和给定查询字词或短语中的特定断字符的行为。有关详细信息,请参阅 sys.dm_fts_index_keywords (Transact-SQL)、sys.dm_fts_index_keywords_by_document (Transact-SQL) 和 sys.dm_fts_parser (Transact-SQL)。这些和其他新的动态管理视图及存储过程可为您解决全文搜索问题提供帮助。有关这些疑难解答资源的信息,请参阅全文搜索故障排除。
引入了一系列新的断字符,从而使断字准确性得以提高,并使可用于全文搜索的语言集合得以扩展。有关详细信息,请参阅断字符和词干分析器。
有关详细信息,请参阅 SQL Server 2008 中全文搜索的行为更改、SQL Server 2008 中不推荐使用的全文搜索功能、SQL Server 2008 中全文搜索的重大更改和全文搜索的体系结构。
Transact-SQL
兼容级别
ALTER DATABASE SET COMPATIBILITY_LEVEL 取代了用于设置数据库兼容级别的 sp_dbcmptlevel。有关详细信息,请参阅 ALTER DATABASE 兼容级别 (Transact-SQL)。
复合运算符
现已提供可执行操作并将变量设置为结果的运算符(例如 SET @x += 2)。有关详细信息,请参阅复合运算符 (Transact-SQL)。
CONVERT 函数
CONVERT 函数现已增强,允许在二进制和字符十六进制值之间进行转换。有关详细信息,请参阅 CAST 和 CONVERT (Transact-SQL)。
日期和时间功能
SQL Server 2008 包含对 ISO 周-日期系统的支持。有关详细信息,请参阅 DATEPART (Transact-SQL)。
GROUPING SETS
GROUPING SETS、ROLLUP 和 CUBE 运算符已添加到 GROUP BY 子句中。新函数 GROUPING_ID() 可以返回比现有 GROUPING() 函数更多的分组级别信息。不推荐使用不符合 ISO 的 WITH ROLLUP、WITH CUBE 和 ALL 语法。有关详细信息,请参阅将 GROUP BY 与 ROLLUP、CUBE 和 GROUPING SETS 一起使用。
MERGE 语句
此新的 Transact-SQL 语句根据与源表联接的结果对目标表执行 INSERT、UPDATE 或 DELETE 操作。该语法允许您将数据源与目标表或视图联接,然后根据该联接的结果执行多项操作。有关详细信息,请参阅 MERGE (Transact-SQL)。
SQL 依赖关系报告
SQL Server 2008 引入了新的目录视图和系统函数用以提供一致可靠的 SQL 依赖关系报告。可以使用 sys.sql_expression_dependencies、sys.dm_sql_referencing_entities 和 sys.dm_sql_referenced_entities 来报告架构绑定和非架构绑定对象的跨服务器、跨数据库和数据库 SQL 依赖关系。有关详细信息,请参阅报告 SQL 依赖关系。
表值参数
数据库引擎引入了可以引用用户定义表类型的新参数类型。表值参数可以将多个数据行发送到 SQL Server 语句或例程(比如存储过程或函数),而不用创建临时表。有关详细信息,请参阅表值参数(数据库引擎)。
Transact-SQL 行构造函数
增强后的 Transact-SQL 可以允许将多个值插入单个 INSERT 语句中。有关详细信息,请参阅 INSERT (Transact-SQL)。