SQL Server 2016中的新功能(数据库引擎)

2017年1月13日  23分钟阅读时长 作者

本人建了个领优惠卷购物群,平时网购可以省点钱.有需要的加群:511169656交流,谢谢

本主题适用于:  SQL Server(从2016开始)  Azure SQL数据库  Azure SQL数据仓库  并行数据仓库

本主题总结了SQL Server数据库引擎的SQL Server 2017版本中引入的增强功能。 新功能和增强功能增强了设计,开发和维护数据存储系统的架构师,开发人员和管理员的功能和生产力。

要查看其他SQL Server组件中的新功能 ,请参阅SQL Server 2016中的新增功能 。

注意

SQL Server 2016是一个64位应用程序。 尽管有些元素作为32位组件运行,但32位安装已停止。

试试看

  • 要下载SQL Server 2016,请访问评估中心  。

  • 有一个Azure帐户? 然后去这里启动一个已经安装了SQL Server 2017的虚拟机。

 有关当前的发行说明,请参阅SQL Server 2016发行说明 。

SQL Server 2016 Service Pack 1(SP1)

SQL Server 2016 RTM

本节包含以下小节:

Columnstore索引

此版本提供了对列存储索引的改进,包括可更新的非聚集列存储索引,内存中表中的列存储索引以及更多用于操作分析的新功能。

  • 只读非聚簇的列存储库索引在升级后可更新。 不需要重建索引,使其可更新。

  • 对列存储器索引的分析查询性能进行了改进,特别是对于聚合和字符串谓词。

  • DMV和XEvents具有可支持性的改进。

有关更多详细信息,请参阅联机丛书的“列存储索引”指南部分中的这些主题:

数据库作用域配置

新的ALTER DATABASE SCOPED CONFIGURATION(Transact-SQL)语句可以控制特定数据库的某些配置。 配置设置影响应用程序行为。

新的语句可用于SQL Server 2016和SQL数据库。

内存中OLTP

存储格式更改

内存优化表的存储格式在SQL Server 2014和2016之间更改。要从SQL Server 2014进行升级和附加/还原,新的存储格式将被序列化,数据库在数据库恢复期间重新启动一次。

ALTER TABLE是日志优化的,并行运行

现在当您在内存优化的表上执行ALTER TABLE语句时,只会将元数据更改写入日志。 这大大减少了日志IO。 此外,大多数ALTER TABLE方案现在并行运行,这可以大大缩短语句的持续时间。

统计

内存优化表的统计信息现在会自动更新。 此外,抽样现在是收集统计数据的支持方法,允许您避免更昂贵的全扫描方法。

并行和堆扫描内存优化的表

内存优化表和内存优化表上的索引现在支持并行扫描。 这提高了分析查询的性能。

此外,还支持堆扫描,可以并行执行。 在内存优化表的情况下,堆扫描是指使用用于存储行的内存堆数据结构扫描表中的所有行。 对于全表扫描,堆扫描比使用索引更有效。

内存优化表的Transact-SQL改进

SQL Server 2014中的内存优化表不支持多个Transact-SQL元素,SQL Server 2016中现在支持这些元素:

  • 支持UNIQUE约束和索引。

  • 支持内存优化表之间的FOREIGN KEY引用。

    • 这些外键只能引用主键,不能引用唯一键。
  • 支持CHECK约束。

  • 非唯一索引可以在其键中允许NULL值。

  • 内存优化表支持TRIGGER。

    • 只支持AFTER触发器。 不支持INSTEADOF触发器。
    • 内存优化表上的任何触发器必须使用WITH NATIVE_COMPILATION。
  • 完全支持所有SQL Server代码页和与内存优化表和本地编译的T-SQL模块中的索引和其他工件的归类。

  • 支持更改内存优化表 :

    • ADD和DROP索引。 更改bucket_count的哈希索引。
    • 进行模式更改:ad​​d / drop / alter columns; 添加/删除约束。
  • 内存优化表现在可以具有多个列,其组合长度大于8060字节页面的长度。 一个例子是一个具有nvarchar(4000)类型的三列的表。 在这样的示例中,一些列现在存储在行外。 您的查询完全不知道列是在行还是离线。

  • 内存优化表中现在支持LOB(大对象)类型 varbinary(max) , nvarchar(max)varchar(max) 。

有关整体信息,请参阅:

用于本机编译的模块的Transact-SQL改进

SQL Server 2014中的本机编译模块不支持某些Transact-SQL元素,现在SQL Server 2016中支持这些元素:

  • 查询结构:

    • UNION和UNION ALL
    • SELECT DISTINCT
    • 外加
    • SELECT中的子查询
  • INSERT,UPDATE和DELETE语句现在可以包含OUTPUT子句 。

  • 现在,LOB可以在本地proc中以下列方式使用:

    • 变量声明
    • 输入参数。
    • 参数传入字符串函数,如本地进程中的LTrim或Substring。
  • 现在可以本地编译内联(意思是单个语句)表值函数(TVFs)。

  • 标量用户定义函数(UDF)现在可以被本地编译。

  • 增加对本机proc的支持:

  • EXECUTE AS CALLER现在支持,这意味着在创建本机编译的T-SQL模块时,不再需要EXECUTE AS子句。

有关整体信息,请参阅:

性能和缩放改进
SQL Server Management Studio中的增强功能
跨功能支持

有关更多信息,请参阅内存中OLTP(内存优化) 。

查询优化器

兼容级保证

将数据库升级到SQL Server 2016时,如果您仍然处于使用的较旧兼容性级别(例如120或110),则不会看到计划更改。 与查询优化器相关的新功能和改进仅在最新兼容性级别下可用。

跟踪标志4199

通常,您不需要在SQL Server 2016中使用跟踪标志4199,因为大多数由此跟踪标志控制的查询优化器行为在SQL Server 2016的最新兼容级别(130)下无条件启用。

新引用完整性运算符

一个表最多可以引用253个其他表和列作为外键(外引参考)。 SQL Server 2016增加了可以引用单个表(引用引用)中的列的其他表和列的数量的限制,从253到10,000。 有关限制,请参阅创建外键关系 。 引入了新的参照完整性算子(在兼容性级别130下),其执行参考完整性检查。 这可以提高UPDATE和DELETE操作的整体性能,对于具有大量入站引用的表,从而使得可以有大量的引用引用。 有关更多信息,请参阅SQL Server 2016中的查询优化程序添加

抽样统计的并行更新

数据抽样构建统计数据现在是并行完成(在兼容级别130下),以提高统计数据收集的性能。 有关详细信息,请参阅更新统计信息

统计更新的亚线阈值

统计数据的自动更新现在对大型表格(在兼容级别130)下更具侵略性。 触发自动更新统计信息的阈值是20%,从SQL Server 2016开始,对于较大的表,该阈值将随着表中行数的增加而开始下降(仍然是百分比)。 您将不再需要设置跟踪标志2371来降低阈值。

其他增强功能

Insert-select语句中的插入是多线程的,或者可以具有并行计划(在兼容级别130下)。 要获得并行计划,INSERT ... SELECT语句必须使用TABLOCK提示。 有关详细信息,请参阅并行插入选择

实时查询统计

Management Studio提供查看活动查询的实时执行计划的功能。 该实时查询计划提供了对查询执行过程的实时洞察,因为控件从一个查询计划运算符流向另一个查询计划运算符。 有关详细信息,请参阅实时查询统计信息

查询商店

查询存储是一种新功能,可以为DBA提供有关查询计划选择和性能的洞察。 通过使您能够快速查找由查询计划中的更改引起的性能差异,从而简化了性能故障排除。 该功能会自动捕获查询,计划和运行时统计信息的历史记录,并保留这些记录供您查看。 它按照时间窗口分隔数据,允许您查看数据库使用模式,并了解查询计划更改发生在服务器上的时间。 查询存储库通过使用Management Studio对话框提供信息,并允许您强制查询到所选查询计划之一。 有关详细信息,请参阅使用查询存储监视性能 。

时间表

SQL Server 2016现在支持系统版本的时间表。 时间表是一种新类型的表,可在任何时间点提供关于存储事实的正确信息。 每个时间表实际上由两个表组成,一个用于当前数据,一个用于历史数据。 系统确保当数据与当前数据更改时,以前的值存储在历史表中。 提供查询结构以隐藏用户的复杂性。 有关更多信息,请参阅时间表 。

条纹备份到Microsoft Azure Blob存储

在SQL Server 2016中,使用Microsoft Azure Blob存储服务将SQL Server备份到URL现在支持使用块blob进行条带化备份集,以支持12.8 TB的最大备份大小。 例如,参见代码示例 。

文件快照备份到Microsoft Azure Blob存储

在SQL Server 2016中,SQL Server备份到URL现在支持使用Azure快照来备份使用Microsoft Azure Blob存储服务存储所有数据库文件的数据库。 有关更多信息,请参阅Azure中的数据库文件的文件快照备份 。

托管备份

在SQL Server 2016中,SQL Server管理备份到Microsoft Azure使用新的块blob存储来备份文件。 受管备份还有一些变化和增强。

注意

对于SQL Server 2016,这些新的托管备份功能在SQL Server Management Studio中尚未具有相应的UI支持。

TempDB数据库

TempDB有几项增强功能:

  • tempdb不再需要跟踪标志1117和1118。 如果有多个tempdb数据库文件,所有文件将根据增长设置同时增长。 另外,tempdb中的所有分配都将使用统一的区域。

  • 默认情况下,安装程序会添加与CPU计数相同数量的tempdb文件,或者增加8位(以较低者为准)。

  • 在安装过程中,您可以使用SQL Server安装向导的数据库引擎配置 - TempDB部分中的新UI输入控件配置tempdb数据库文件的数量,初始大小,自动增长和目录布局。

  • 默认的初始大小为8MB,默认的自动增长为64MB。

  • 您可以为tempdb数据库文件指定多个卷。 如果指定了多个目录,则tempdb数据文件将以循环方式传播到目录中。

内置JSON支持

SQL Server 2016为导入和导出JSON以及使用JSON字符串添加内置支持。 这个内置的支持包括以下语句和功能。

多碱

PolyBase允许您使用T-SQL语句访问存储在Hadoop或Azure Blob Storage中的数据,并以自定义方式进行查询。 它还允许您查询半结构化数据,并将结果与​​存储在SQL Server中的关系数据集相加。 PolyBase针对数据仓库工作负载进行了优化,旨在用于分析查询方案。

有关更多信息,请参阅PolyBase Guide 。

拉伸数据库

Stretch数据库是SQL Server 2016中的一项新功能,可将您的历史数据透明而安全地迁移到Microsoft Azure云端。 无论是内部还是扩展到云,您都可以无缝地访问SQL Server数据。 您设置确定数据存储位置的策略,SQL Server将在后台处理数据移动。 整个表格总是在线和可查询的。 而且,Stretch数据库不需要对现有查询或应用程序进行任何更改 - 数据的位置对于应用程序是完全透明的。 有关更多信息,请参阅弹力数据库 。

支持UTF-8

bcp实用程序 , BULK INSERTOPENROWSET现在支持UTF-8代码页。 有关详细信息,请参阅这些主题和创建格式文件(SQL Server) 。

新的默认数据库大小和自动增长值

模型数据库的新值和新数据库的默认值(基于模型)。 数据和日志文件的初始大小现在是8 MB。 数据和日志文件的默认自动增长现在是64MB。

Transact-SQL增强

许多增强功能支持本主题其他部分中描述的功能。 以下附加增强功能可用。

系统视图增强功能

安全性增强

行级安全性

行级安全性引入基于谓词的访问控制。 它具有灵活,集中的基于谓词的评估,可以考虑元数据(如标签)或管理员适当确定的任何其他条件。 该谓词用作判断用户是否根据用户属性对数据进行适当访问的标准。 基于标签的访问控制可以通过使用基于谓词的访问控制来实现。 有关更多信息,请参阅行级安全性 。

一律加密

通过始终加密,SQL Server可以对加密数据执行操作,最重要的是加密密钥与客户的信任环境中的应用程序不在服务器上。 始终加密保护客户数据,使DBA无法访问纯文本数据。 数据的加密和解密在驱动程序级别上透明地发生,最小化必须对现有应用程序进行的更改。 有关详细信息,请参阅始终加密(数据库引擎) 。

动态数据屏蔽

动态数据屏蔽通过将敏感数据曝光屏蔽到非特权用户来限制。 动态数据屏蔽有助于防止未经授权的访问敏感数据,使客户能够以最小的影响来指定要显示的敏感数据的数量。 这是一种基于策略的安全功能,可以在查询的结果集中隐藏指定数据库字段的敏感数据,而数据库中的数据不会更改。有关详细信息,请参阅动态数据屏蔽 。

新权限

  • ALTER ANY SECURITY POLICY权限是执行行级安全性的一部分。
  • ALTER ANY MASK和UNMASK权限作为实施动态数据屏蔽的一部分可用。
  • ALTER任何列加密密钥 , 查看任何列加密密钥 , 任何列的主密钥定义 ,以及查看任何列的主密钥定义权限作为始终加密特征的实施的一部分。
  • ALTER ANY EXTERNAL DATA SOURCE和ALTER ANY EXTERNAL FILE FORMAT权限在SQL Server 2016中可见,但仅适用于Google Analytics(分析)平台系统(SQL数据仓库)。
  • EXECUTE ANY EXTERNAL SCRIPT权限作为R脚本支持的一部分可用。

透明数据加密

  • 透明数据加密功能得到了加强,支持英特尔AES-NI硬件加密加密。 这将减少打开透明数据加密的CPU开销。

端点AES加密

  • 端点的默认加密从RC4更改为AES。

新证书类型

高可用性增强功能

SQL Server 2016标准版现在支持始终基本可用性组。 基本可用性组提供对主副本和辅助副本的支持。 此功能可替代过时的数据库镜像技术,实现高可用性。 有关基本和高级可用性组之间差异的更多信息,请参阅基本可用性组(始终在可用性组上) 。

现在,在一组只读副本中支持读取意图连接请求的负载平衡。 以前的行为总是将连接指向路由列表中的第一个可用的只读副本。 有关详细信息,请参阅在只读副本之间配置负载平衡 。

支持自动故障切换的副本数量已由2个增加到3个。

“始终故障转移群集”现在支持组管理服务帐户。 有关详细信息,请参阅组管理服务帐户 。 对于Windows Server 2012 R2,需要进行更新以避免密码更改后的临时停机时间。 要获取更新,请参阅基于gMSA的服务在Windows Server 2012 R2域中的密码更改后无法登录 。

始终在可用性组上支持分布式事务和Windows Server 2016上的DTC。有关详细信息,请参阅支持分布式事务 。

当数据库脱机时,现在可以配置始终在可用性组中进行故障转移。 此更改需要在CREATE AVAILABILITY GROUP(Transact-SQL)ALTER AVAILABILITY GROUP(Transact-SQL)语句中将DB_FAILOVER选项设置为ON 。

Always On现在支持加密数据库。 当您创建新的可用性组或向现有的可用性组添加数据库或添加副本时,可用性组向导将提示您输入包含数据库主密钥的任何数据库的密码。

两个单独的Windows Server故障转移群集(WSFC)中的两个可用性组现在可以组合成分布式可用性组。 有关详细信息,请参阅分布式可用性组(始终在可用性组上) 。

直接播种允许将辅助副本通过网络自动播种(而不是手动播种,需要在辅助节点上恢复目标数据库的物理备份)。 通过在CREATE AVAILABILITY GROUP(Transact-SQL)ALTER AVAILABILITY GROUP(Transact-SQL)语句中设置SEEDING_MODE = AUTOMATIC来指定直播。 您还必须在与直接播种一起使用的每个辅助副本上为ALTER AVAILABILITY GROUP(Transact-SQL)指定GRANT CREATE ANY DATABASE 。

性能改进 - 可用性组的同步吞吐量通过主副本上的日志块的并行和更快的压缩,优化的同步协议以及辅助副本上的并行解压缩和重做日志记录而增加了约10倍。 这增加了可读副本的新鲜度,并在故障转移的情况下减少了数据库恢复时间。 请注意,在SQL Server 2016中,针对内存优化的表的重做并不平行。

复制增强功能

工具增强功能

管理工作室

下载最新的SQL Server Management Studio(SSMS)

  • SQL Server Management Studio支持正在开发的用于连接到Microsoft Azure的Active Directory认证库(ADAL)。 这将替代SQL Server 2014 Management Studio中使用的基于证书的身份验证。
  • SQL Server Management Studio安装需要安装.NET 4.6作为先决条件。 .NET 4.6将安装SQL Server Management Studio中时自动被安装程序安装。
  • 复制或保存从结果网格文本时,一个新的查询结果网格选项支持保持回车/换行(换行符)。从工具/选项菜单设置此。
  • SQL Server管理工具不再从主要特征树安装; 详见安装与SSMS SQL Server管理工具
  • SQL Server Management Studio中安装需要安装.NET 4.6.1作为先决条件。.NET 4.6.1将安装SQL Server Management Studio中时自动被安装程序安装。

升级顾问

SQL服务器2016升级顾问预览是一个独立的工具,使以前版本的用户可以运行一组升级规则对他们的SQL Server数据库要找准突破和行为的变化,并建议使用的功能以及提供帮助,采用了新的功能,如拉伸数据库。

您可以下载升级顾问预览这里,也可以通过使用Web平台安装程序进行安装。

也可以看看

在SQL Server 2016的新增功能

SQL服务器2016版本说明

安装与SSMS SQL Server管理工具

 

from :https://docs.microsoft.com/zh-cn/sql/database-engine/configure-windows/what-s-new-in-sql-server-2016-database-engine

sqlserver2016新功能的更多相关文章

  1. 从淘宝 UWP 的新功能 -- 比较页面来谈谈 UWP 的窗口多开功能

    前言 之前在 剁手党也有春天 -- 淘宝 UWP ”比较“功能诞生记 这篇随笔中介绍了一下 UWP 淘宝的“比较”新功能呱呱坠地的过程.在鲜活的文字背后,其实都是程序员不眠不休的血泪史(有血有泪有史) ...

  2. Sql Server 2016新功能之 Row-Level Security

    Sql Server 2016 有一个新功能叫 Row-Level Security ,大概意思是行版本的安全策略(原来我是个英语渣_(:з」∠)_) 直接上例子.这个功能相当通过对表添加一个函数作为 ...

  3. What's new in Windows 10 Enterprise with Microsoft Edge.(Windows 10 新功能)

    What's new in Windows 10 Enterprise with Microsoft Edge --带有Edge浏览器的Windows 10 企业版的新功能 本文摘录自公司群发邮件, ...

  4. MySQL 5.7 Replication 相关新功能说明

    背景: MySQL5.7在主从复制上面相对之前版本多了一些新特性,包括多源复制.基于组提交的并行复制.在线修改Replication Filter.GTID增强.半同步复制增强等.因为都是和复制相关, ...

  5. SQL Server2016 新功能实时查询统计信息

    SQL Server2016 新功能实时查询统计信息 很多时候有这样的场景,开发抱怨DBA没有调优好数据库,DBA抱怨开发写的程序代码差,因此,DBA和开发都成为了死对头,无法真正排查问题. DBA只 ...

  6. 一个新人如何学习在大型系统中添加新功能和Debug

    文章背景: 今年七月份正式入职,公司主营ERP软件,楼主所在的组主要负责二次开发,使用的语言是Java. 什么叫二次开发呢?ERP软件的客户都是企业.而这些企业之间的情况都有所不同,一套标准版本的企业 ...

  7. SQL Server 2014新功能PPT

        本篇文章是我在公司内部分享SQL Server 2014新功能的PPT,在本PPT中我详细描述了SQL Server除了BI方面的新功能,以及提供了大量的测试.希望对大家有帮助.     请点 ...

  8. 【开源】OSharp3.0框架解说系列:新版本说明及新功能规划预览

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  9. PHP5各个版本的新功能和新特性总结

    因为 PHP 那“集百家之长”的蛋疼语法,加上社区氛围不好,很多人对新版本,新特征并无兴趣.本文将会介绍自 PHP5.2 起,直至 PHP5.6 中增加的新特征 本文目录:PHP5.2 以前:auto ...

随机推荐

  1. 处理文件中的" M-BM- "特殊符号

    有时为了方便,会在Excel中进行代码拼装,比如说是建表SQL语句,但是在复制的代码过程中可能会带入不可见字符,造成代码无法运行. 本次代码中就需要了不可见的" M-BM- " 问 ...

  2. 微信小程序之点击列表的item带参数跳转界面

    1.在js文件里写个界面跳转的事件处理函数gotableinfo,var index = parseInt(e.currentTarget.dataset.index); 为获取当前点击列表的下脚标, ...

  3. STM8L LCD配置与com使用问题

    void LCD_GPIO_Config(void) { //SEG GPIO Init GPIO_Init(GPIOE, GPIO_Pin_0|GPIO_Pin_1,GPIO_Mode_Out_PP ...

  4. 2018-2019-2 20165313 Exp2 后门原理与实践

    实践基础问题回答 (1)例举你能想到的一个后门进入到你系统中的可能方式? 应用程序设定后门,用户安装后,后门就可以进入.例如课堂上讲到的百度. (2)例举你知道的后门如何启动起来(win及linux) ...

  5. node.js跨域

    先上解决方法:在函数中添加(不要用xhr请求) // 只需要关心第二个参数res.setHeader('Access-Control-Allow-Origin', 'http://localhost: ...

  6. Git 几个常用操作

    git init        --    初始化仓库, git clone    --    从远端克隆仓库到本地 git status   --    查看git仓库的状态 git log    ...

  7. javascript---lat const var 的区别

    首先,ECMAScript和JavaScript关系:      ECMAScript是一个国际通过的标准化脚本语言.JavaScript由ECMAScript和DOM.BOM三者组成.可以简单理解为 ...

  8. Python3的List操作和方法

    列表函数: len(list):列表元素个数 max(list):返回list中最大的元素 min(list):返回list中最小的元素 list(seq):将元组转换为列表 列表方法: list.a ...

  9. java 大数运算[转]

    用JAVA 实现算术表达式(1234324234324 + 8938459043545)/5 + 343434343432.59845 因为JAVA语言中的long 定义的变量值的最大数受到限制,例如 ...

  10. day-12函数对象

    函数默认值的细节 如果函数的默认参数的默认值为变量,在所属函数定义阶段一执行就被确定为当时变量存放的值,后面变化不会再变化 a = 100 def fn(num=a): a = 200 fn() 三元 ...