针对可编程性的增强功能(数据库引擎)

数据库引擎中的可编程性增强功能包括 FileTable、统计语义搜索、属性范围内的全文搜索和可自定义的邻近搜索、即席查询分页、针对空间类型的圆弧线段支持、针对序列对象的支持、对 15,000 个分区的默认支持,以及针对 Transact-SQL 的众多改进和新增功能。

本机 XML Web 服务(SOAP/HTTP 端点)已删除。

从 SQL Server 2012 开始,您不再能够使用 CREATE ENDPOINT 或 ALTER ENDPOINT 来添加或修改 SOAP/HTTP 端点。

FileTable

FileTable 功能建立在 SQL Server FILESTREAM 技术的基础上,可为 SQL Server 中存储的文件数据提供 Windows 文件命名空间以及与 Windows 应用程序的兼容性支持。 这使得应用程序可以集成存储和数据管理组件,可对非结构化数据和元数据提供集成的 SQL Server 服务(包括全文搜索和语义搜索),并使得策略管理变得轻松。

总之,您现在可以在 SQL Server 中将文件和文档存储在特别的表中,但是从 Windows 应用程序访问它们,就好像它们存储在文件系统中,而不必对 Windows 应用程序进行任何更改。

有关 FileTable 功能的详细信息,请参阅FileTable (SQL Server)

统计语义搜索

统计语义搜索通过提取统计上相关的“关键短语”,然后基于这些短语标识“相似文档”,提供对 SQL Server 数据库中存储的非结构化文档的更深层次剖析。 这些结果通过三个 Transact-SQL 行集函数作为结构化数据提供。

语义搜索以 SQL Server 中现有的全文搜索功能为基础,但允许超出依照句法的关键字搜索范畴的新方案。 全文搜索允许您查询文档中的“词”,语义搜索则允许您查询文档的“含义”。 新方案包括自动标记提取、相关内容的发现以及相似内容中层次结构导航。 例如,您可以查询文档相似性索引来标识匹配某一工作描述的简历。 或者,您可以查询关键短语的索引来建立一个组织或文档集的分类索引。

有关详细信息,请参阅语义搜索 (SQL Server)

在可以使用语义搜索之前,您必须安装、附加和注册一个附加的数据库。 有关详细信息,请参阅安装和配置语义搜索

全文搜索

属性搜索

从 SQL Server 2012 开始,您可以配置全文索引以支持对属性(如:IFilters 发出的 Author 和 Title)进行属性范围内的搜索。 这种形式的搜索称为“属性搜索”。 能否对给定类型的文档执行属性搜索取决于在建立全文索引的过程中相应的筛选器 (IFilter) 是否提取搜索属性。 在提取若干文档属性的 IFilter 中,包括用于提取 Microsoft Office 2007 文档文件类型(如 .docx、.xlsx 和.pptx)的 IFilter。 有关详细信息,请参阅使用搜索属性列表搜索文档属性

可自定义 NEAR

从 SQL Server 2012 开始,通过使用 CONTAINS 谓词或 CONTAINSTABLE 函数中新增的自定义 NEAR 选项,您可以自定义邻近搜索。 使用自定义 NEAR 选项,您可以选择指定用来分隔匹配中的第一个和最后一个搜索词的非搜索词的最大数目。 自定义 NEAR 选项还支持您选择指定仅当字词和短语按您指定的顺序出现时才匹配。有关详细信息,请参阅使用 NEAR 搜索与另一个词邻近的词

新的断字符和词干分析器

在此版本中更新了全文搜索和语义搜索使用的所有断字符和词干分析器,只有韩语除外。 为了保持索引内容和查询结果之间的一致性,建议您在更新后重新填充现有全文索引。

  1. SQL Server 的先前版本附带的英语的第三方断字符已替换为 Microsoft 组件。 如果您必须保留先前行为,请参阅更改用于美国英语和英国英语的断字符

  2. SQL Server 的先前版本附带的丹麦语、波兰语和土耳其语的第三方断字符已替换为 Microsoft 组件。 默认情况下启用这些新组件。

  3. 捷克语和希腊语已有了新的断字符。 先前版本的 SQL Server 全文搜索不包括对这两种语言的支持。

  4. 新断字符的行为已更改。 有关详细信息,请参阅对全文搜索的行为更改。 如果您必须保留先前行为,请参阅将搜索功能所使用的断字符还原到以前的版本

  5. 此版本安装最新的 Microsoft 断字符和词干分析器,但是不安最新的 Microsoft 筛选器。 若要下载最新的筛选器,请参阅 Microsoft Office 2010 Filter Packs

新的和增强的空间功能

SQL Server 2012 中新增的空间功能是 SQL Server 中对于空间数据支持的不断发展过程中的一个重要里程碑。 针对关系数据库系统,对整个地球的空间对象和椭圆体上的圆弧的支持是业界首创之举。 geography 数据类型与 geometry 数据类型在功能及其所支持的各种方法方面已实现了等同性。 整体性能(从空间索引到方法)已大有改进。 对空间数据支持的这些改进以及其他改进意味着 SQL Server 的空间功能前进了一大步。

有关这些新的空间功能的详细说明和示例,请下载白皮书 SQL 2012 中的新的空间功能

对于空间数据类型的改进

新圆弧以及相关方法

  • **新的子类型。**圆弧有 3 种新的子类型:

    • CircularString

    • CompoundCurve

    • CurvePolygon

  • **新方法。**所有现有方法都可以处理圆形对象。 此外还引入了以下新方法:

    • BufferWithCurves() 使用圆弧构造一个缓冲对象,与 STBuffer() 相比,所需的点数大大减少。

    • STNumCurves()STCurveN() 用于迭代圆弧边的列表。

    • STCurveToLine()CurveToLineWithTolerance() 用于通过默认和用户指定容差内的线段来模拟圆弧。

适用于 geometry 和 geography 对象的新的和更新的方法和聚合

  • 新方法。

    • IsValidDetailed() 返回一条消息,帮助您确定空间对象无效的原因。

    • 如果空间对象包括至少一个 Z 值,则 HasZ 返回 1 (true)。

    • 如果空间对象包括至少一个 M 值,则 HasM 返回 1 (true)。

    • AsBinaryZM() 对 OGC WKB 格式增加了对 Z 值和 M 值的支持。

    • ShortestLineTo() 返回一个 LineString,表示两个对象之间的最短距离。

    • STLength() 已更新,现在可同时处理有效和无效的 LineString。

    • MinDbCompatibilityLevel() 是一种用于向后兼容的新方法。 它指示 SQL Server 2008 和 SQL Server 2008 R2 是否可以识别空间对象。

  • **新聚合。**这些聚合仅适用于 Transact-SQL,而不适用于客户端编程库。

    • UnionAggregate

    • EnvelopeAggregate

    • CollectionAggregate

    • ConvexHullAggregate

改进了精度。

与 SQL Server 2008 和 SQL Server 2008 R2 中使用 27 位精度相比,现在所有构造和关系都是使用 48 位精度实现的。 这样可以减小由于浮点坐标舍入导致的误差。

geography 类型的增强功能

  • 整个地球。SQL Server 现在支持比逻辑半球更大的空间对象。 以前,在 SQL Server 2008 中,地理功能仅限于比逻辑半球略小。 在 SQL Server 2012 中,它们现在可以与整个地球一样大。 可以构造一种新的对象类型(称为 FULLGLOBE),也可以作为操作结果收到这种对象。

  • 新方法。

    • **适用于无效对象。**现在,地理类型允许在表中插入无效对象。 STIsValid()MakeValid() 允许采用与几何图形类型相似的方式检测和更正无效的地理对象。

    • **对于环方向。**现在可以容纳地理多边形,而不必顾及环方向。 这可能导致意外的行为。 在构造多边形环时方向错误的情况下,可以使用 ReorientObject() 重新确定多边形环的方向。

    • 针对地理类型添加了几何图形方法。STWithin()STContains()STOverlaps()STConvexHull() 方法以前仅适用于几何图形类型,但现在对于地理类型添加了这些方法。 除 STConvexHull() 之外,空间索引支持这些新方法。

  • **新的 SRID。**新的空间引用标识符 (SRID) 104001 已添加到支持的空间引用系统列表中。 这个新的 SRID 是一个地球单元球(半径为 1 的球),当不需要更精确的椭圆数学计算时,可与地理类型结合使用来执行优化的数值计算。

空间性能改进

空间索引改进

  • **新的自动网格。**新的自动网格空间索引可用于这两种空间类型(geometry_auto_gridgeography_auto_grid)。 新的自动网格使用不同的策略在性能与效率进行适当的权衡。 有关详细信息,请参阅 CREATE SPATIAL INDEX (Transact-SQL)

  • 新的空间索引提示 SPATIAL_WINDOW_MAX_CELLS。 此新空间提示对于使用空间索引对查询性能进行优化至关重要。 密集的空间数据往往需要较高的 SPATIAL_WINDOW_MAX_CELLS,而稀疏的空间数据往往要求较低的 SPATIAL_WINDOW_MAX_CELLS,以获得最佳性能。 此提示并不能保证将在查询计划中使用空间索引。 但是,如果使用它,则此提示将覆盖默认的 WINDOW_MAX_CELLS 参数。

  • **压缩空间索引。**有关详细信息,请参阅 CREATE SPATIAL INDEX (Transact-SQL)

其他性能改进

  • 当使用特定的语法时,可以使用优化的邻近点查询计划。

  • 其他几种方法已针对常见方案进行优化。

  • 由于改进措施影响所有 CLR UDT 聚合,因此,空间聚合具有更好的性能。

其他空间改进

空间帮助器存储过程

系统提供了两个新的帮助器存储过程。 这些过程可用于对空间数据在表内给定空间列的分布进行计算。

对持久化计算列的支持

现在,可以在计算列中持久化 UDT 和空间类型。

客户端空间编程库中的变化

元数据发现

用于确定响应格式而无需实际运行查询的 SET FMTONLY 选项已被 sp_describe_first_result_setsp_describe_undeclared_parameterssys.dm_exec_describe_first_result_setsys.dm_exec_describe_first_result_set_for_object 所取代。

EXECUTE 语句

EXECUTE 语句现在可以指定通过使用 WITH RESULT SETS 参数从该语句返回的元数据。 有关详细信息,请参阅 EXECUTE (Transact-SQL)

UTF-16 支持

UTF-16 增补字符 (SC) 排序规则

新的增补字符 (SC) 排序规则系列可用于以下数据类型:nchar、nvarchar 和 sql_variant。 例如:Latin1_General_100_CI_AS_SC 或 Japanese_Bushu_Kakusu_100_CI_AS_SC(如果使用日语排序规则)。 这些排序规则以 UTF-16 格式对 Unicode 字符进行编码。 码位值大于 0xFFFF 的字符需要两个连续的 16 位字。 这些字符称为增补字符,两个连续的 16 位字称为代理项对。 SC 排序规则可通过使用 Unicode 类型 nchar 和 nvarchar 的函数改善搜索和排序功能。 有关详细信息,请参阅排序规则和 Unicode 支持

针对 XML 的 UTF-16 增补字符 (SC) 排序规则选项

SQL Server 2012 添加了一个新的排序规则选项(“SC”或“增补字符”),用于标识排序规则是否为识别 UTF-16 的。 有关详细信息,请参阅排序规则和 Unicode 支持。 SQL Server 2012 还在 SQL 类型 XML 架构和其他位置中添加了对此排序规则选项的支持,在这些位置,SQL Server 在 XML 上下文中公开或使用此信息。 受到影响的位置如下:

  • SQL 类型 XML 架构。 该架构版本现在为 1.2。 该架构是向后兼容的,并且未更改目标命名空间。 该架构现在公开 supplementaryCharacters 全局属性。

  • 针对 FOR XML 的 XMLSCHEMA 指令。 新的全局属性在 XMLSCHEMA 指令生成的内联架构和实例批注中公开,类似的属性还包括 localeId 和 sqlCompareOptions。 RAW 和 AUTO 模式下的 FOR XML 支持此指令,但在 EXPLICIT 或 PATH 模式下则不支持。

  • sys.sys XML 架构集合。 这个新的全局属性在内置 sys.sys XML 架构集合中预先填充,并且在导入 SQL 类型 XML 架构的所有其他 XML 架构集合中隐式提供。

  • 目录视图。 这个新的全局属性现在在以下目录视图中列出:

    • sys.xml_schema_components

    • sys.xml_schema_attributes

    • sys.xml_schema_component_placements

  • 升级的 XML 架构集合。 在从以前版本的 SQL Server 升级后,这个新的全局属性将在导入 SQL 类型 XML 架构的所有 XML 架构集合中公开。

  • XML 列集。 这个新的全局属性现在添加到表示使用新的 UTF-16 排序规则的 sql_variant 字符串的 XML 列集中。 在插入和更新过程中也可以应用此属性,以便设置稀疏列中 sql_variant 类型的字符串值以使用识别 UTF-16 的排序规则。

实现即席查询分页

您可以指定基于所提供的行偏移量和行计数值通过 SELECT 语句返回一定范围内的行。 在您希望针对给定查询控制发送到客户端应用程序的行数的情况下,该功能非常有用。 有关详细信息,请参阅 ORDER BY 子句 (Transact-SQL)

序列对象

序列对象是用户定义的绑定到架构的对象,该对象可根据创建序列所依据的规范来生成数值序列。 该对象的作用类似于标识列,但序列号不限于在单个表内使用。 有关详细信息,请参阅序列号

THROW 语句

THROW 语句可用于引发异常并将执行转移到 TRY…CATCH 构造的 CATCH 块。 有关详细信息,请参阅 THROW (Transact-SQL)

14 个新函数和 1 个更改的函数

SQL Server 2012 引入了 14 个新的内置函数。 这些函数通过模拟在许多桌面应用程序的表达式语言中提供的功能,使信息工作者可以更轻松地进行迁移。 不过,这些函数对于有经验的 SQL Server 用户而言也将很有用。

这些新函数是:

转换函数

日期和时间函数

逻辑函数

字符串函数

除了新增了 14 个函数之外,还对一个现有函数进行了更改。 现有的 LOG (Transact-SQL) 函数现在具有可选的第二个 base 参数。

SQL Server Express LocalDB

SQL Server Express LocalDB 是 Express 的一种新的轻型版本,该版本具备所有可编程性功能,但在用户模式下运行,并且具有快速的零配置安装和必备组件要求较少的特点。 该 LocalDB 版本的 SQL Server 面向程序开发人员。 LocalDB 安装将复制启动 SQL Server 数据库引擎 所需的最少的文件集。 安装 LocalDB 后,开发人员将使用特定连接字符串来启动连接。 连接时,将自动创建并启动所需的 SQL Server 基础结构,从而使应用程序无需执行复杂或耗时的配置任务即可使用数据库。 开发人员工具可以向开发人员提供 SQL Server 数据库引擎,使其不必管理 SQL Server 的完整服务器实例即可撰写和测试 Transact-SQL 代码。 可通过使用 SqlLocalDB.exe 实用工具来管理 SQL Server Express LocalDB 的实例。 SQL Server Express LocalDB 应该用于代替已不再推荐使用的 SQL Server Express 用户界面功能。 有关详细信息,请参阅 SQL Server 2012 Express LocalDB

新的和增强的查询优化器提示

FORCESEEK 表提示的语法已经修改。 您现在可以指定索引和索引列,以便进一步控制针对索引的访问方法。 现有的 FORCESEEK 语法保持不变,如以前一样工作。 如果您不计划使用这个新功能,则不需要对应用程序进行任何更改。

添加了 FORCESCAN 表提示。 此提示通过指定查询优化器仅将索引扫描操作作为查询中引用的表或视图的访问路径,对 FORCESEEK 提示进行了补充。 对于优化器低估受影响的行数并选择一个查找操作而非扫描操作的查询,FORCESCAN 提示很有用。 指定 FORCESCAN 时有无 INDEX 提示均可。 有关详细信息,请参阅表提示 (Transact-SQL)

扩展事件增强功能

提供以下新的扩展事件。

page_allocated

  • 字段:worker_address、number_pages、page_size、page_location、allocator_type、page_allocator_type、 pool_id

page_freed

  • 字段:worker_address、number_pages、page_size、page_location、allocator_type、page_allocator_type、 pool_id

allocation_failure

  • 字段:worker_address、failure_type、allocation_failure_type、resource_size、pool_id、factor

下列扩展事件已修改。

resource_monitor_ring_buffer_record

  • 删除的字段:single_pages_kb、multiple_pages_kb

  • 添加字段:target_kb,pages_kb

memory_node_oom_ring_buffer_recorded

  • 删除的字段:single_pages_kb、multiple_pages_kb

  • 添加的字段:target_kb、pages_kb

增强了 OVER 子句支持

OVER 子句已扩展为支持窗口函数。 窗口函数对与当前行存在某种关系的一组行执行计算。 例如,您可以将 ROWS 或 RANGE 子句用于一组行以便计算移动平均或累计合计。 有关详细信息,请参阅 OVER 子句 (Transact-SQL)

此外,在允许指定 OVER 子句的聚合函数中现在支持对分区内的行进行排序。

分析函数

添加了以下分析函数。

CUME_DIST (Transact-SQL)

LAST_VALUE (Transact-SQL)

PERCENTILE_DISC (Transact-SQL)

FIRST_VALUE (Transact-SQL)

LEAD (Transact-SQL)

PERCENT_RANK (Transact-SQL)

LAG (Transact-SQL)

PERCENTILE_CONT (Transact-SQL)

XQuery 函数可识别代理项

XQuery 函数和运算符的 W3C 建议要求它们对代理项对进行计数,该代理项对用 UTF-16 编码将大范围 Unicode 字符表示单个符号。 但是,在 SQL Server 2012 之前的 SQL Server 版本中,字符串函数不能将代理对识别为单个字符。 某些字符串操作(例如,字符串长度计算和子字符串提取)会返回不正确的结果。 SQL Server 2012 现在完全支持 UTF-16,可正确处理代理项对。 有关详细信息,请参阅主题SQL Server 2012 中数据库引擎功能的重大更改中的“XQuery 函数可识别代理”部分。

请参阅

概念

新增功能(数据库引擎)