SQL 2016——新功能

 

介绍

SQL Server 2016(最终)于201661日发布,初始内部版本号为13.0.1601.5Microsoft build SQL 2016将心中的很多东西保留了下来,例如云优先,安全性增强,JSON支持,时态数据库支持,行级安全性,Windows Server 2016连接性,非关系数据库连接性(例如Hadoop),丰富的视觉效果等。

在本文中,我们将逐步介绍SQL 2016的所有新功能,并逐一介绍它们。

始终加密

顾名思义,SQL 2016总是加密功能总是将敏感数据加密在静止状态(本地环境)或远程(云/Azure)。这将有助于保护数据免受DBA,云运营商,高特权但未经授权的用户之类的人的攻击。

怎么运行的

您可以将始终加密设置为单独的列(敏感数据所在的位置)。在配置列时,需要指定加密算法和加密密钥来保护数据。您基本上需要定义两个键:

  1. 用于列数据加密的加密密钥(将用于加密特定列的数据)
  2. 主密钥:用于列加密密钥的加密

因此,基本上,这是双重加密保护,只有程序可以访问它,客户端应用程序会在从数据库中获取数据之前自动对数据进行加密和解密。

JSON支持

SQL 2016直接支持JSONJava脚本对象表示法),SQL具有读取JSON格式数据,将其加载到表中以及在JSON列中支持索引属性的功能。

JSON数据将以NVARCHAR类型存储。根据NVARCHAR类型,应用程序具有以下优点:

  • 已经存储的JSON数据(作为文本)可以轻松迁移到新功能上。
  • 由于所有SQL组件都支持NVARCHAR,因此JSON也支持。

您可以使用以下语法从SQL轻松获取用于JSON的数据:

SELECT column, expression, column as alias
FROM table1, table2, table3
FOR JSON [AUTO | PATH]

这是一条SELECT命令,因此当我们触发上述查询时,SQL将格式化每个行/单元格值并作为JSON对象返回。

SQL还为JSON提供了内置功能。

动态数据屏蔽

这再次是SQL 2016的安全功能之一。顾名思义,它只是将MASK包装在您的数据上,简而言之,它隐藏了您不想显示的机密数据。它只是避免泄露您的敏感数据。

屏蔽后,具有限制权限的SQL用户将无法查看原始文本,他只能查看屏蔽文本SQL具有预定义的屏蔽功能,您只需要将其应用于不同的列即可,如下所示:

高级

功能

应用于

纯文本(输入)

屏蔽文字(输出)

1

默认

字符串,数字

A B C D

xxx

2

电子邮件

电子邮件文字

[email protected]

[email protected]

3

随机

号码

1234

684

4

自订字串

文本

兔子

RXXXX

要将其应用于特定的列,您只需要ALTER使用'MASKED WITH'函数名称进行列,请参见以下语法:

//here I used function as Default(), you can change it to any of the above types

ALTER TABLE tablename ALTER COLUMN columnname MASKED WITH (FUNCTION=‚default()‘)

PolyBase

它是一个多连接功能,我们可以从其中连接所有关系和非关系数据,它可以帮助您连接Hadoop数据库和Azure Blob存储。基本上,PolyBaseSQL范围之外的数据之间建立桥梁,而在HadoopAzure存储上进行查询时,则不需要其他知识或安装。简单来说,您可以将数据导入到HadoopAzure存储和从中导出数据。此外,您可以将其与Microsoft的商业智能集成。

行级安全

这再次是SQL 2016的安全功能之一。它允许您逐行保护数据,简而言之,您可以定义一行,只有特定的SQL用户才能查看该行。因此,根据SQL用户访问权限,我们可以限制行级别的数据,例如,尽管部门表相同,我们可以确保员工是否只能查看其部门数据。

要实现行级安全性,您需要使用谓词和函数定义安全性策略。

安全策略:我们需要创建一个安全策略,这是简单的语法:

CREATE SECURITY POLICY fn_security ADD [FILTER | BLOCK] PREDICATE FunctionName ON TableName

在上述语法中,FILTER BLOCK是谓词,将FILTER行并仅显示可用于读取的BLOCK行或仅用于写操作的行。

FunctionFunction是一个简单的用户定义函数,但是以下是行级安全性语法中使用的用户定义函数的一些限制:

  • 不允许进行数据库修改操作
  • OUTPUT INTO 子句在函数中是不允许的
  • 不应从函数返回多个结果集

拉伸数据库

顾名思义,它为用户提供了灵活性。简而言之,我们可以将数据库的一部分存储到远程(在这里,我们可以说云/ Azure)。数据的一部分可以称为冷数据。(对于行业数据需要长时间保存事务数据的用户而言,这很有用。)因此,可以说这是一种用于COLD数据存储的经济有效的解决方案,您的数据可随时用于查询和管理。您可以访问数据而无需更改本地或拉伸数据库中存在的查询。

要配置它,您需要一个需要扩展的Azure帐户和数据库实例。接下来的快照将清除您的想法。

多个TempDB

拥有多个临时数据文件始终是一个好习惯,如果您正在处理重要的数据,到目前为止(SQL 2014),您需要手动将临时数据库文件添加到数据库中,但是SQL 2016为您提供了临时数据库配置设置,您可以在其中配置SQL安装时的TempDB文件数。默认文件数为8,默认大小为64 MB

因此,您不再需要手动配置/创建它。

查询存储

到目前为止,要检查查询计划和执行统计信息,我们需要SQL中的动态管理视图,但是它既不能为您提供由过去/旧查询执行的查询计划,也不会将其存储在任何地方以便您查看,但是SQL 2016提供了您可以通过查询存储来查询当前和过去的查询的查询计划,统计信息和查询执行。

要启用它,只需右键单击数据库(显然,您需要SQL 2016 SSMS),然后转到属性。您将在左上角看到查询存储,将其选中并单击启用” true,或者您可以使用Query进行如下操作:

ALTER DATABASE [Database1] SET QUERY_STORE = ON

时间表

您是否要存储SQL表的历史记录?因此,您要在更新表后查看旧记录吗?然后,您可以使用此功能。SQL 2016提供了记录版本功能,可在其中记录更改记录的历史记录并对其进行维护以进行及时分析。此功能可用于审核,检查数据趋势,意外更新/删除数据等等。

怎么运行的

基本上,系统保留一对表作为历史记录,并在其中添加两个名为'SysStartTime''SysEndTime'的其他列,分别作为行的开始时间和结束时间。实时表包含行的当前记录,而历史表包含行的先前记录。我们可以使用以下查询从历史记录表中获取数据:

SELECT * FROM table1 FOR SYSTEM_TIME   
BETWEEN date1 AND date2
WHERE condition;

R介绍

您是否在SQL中存储了统计数据?是否要使用R进行分析?您每次将数据从SQL导出到R吗?然后,SQL 2016将解决您的头痛问题,因为它已经包含在R中。您可以在SQL上运行R脚本。您需要在SQL设置时安装此功能。

参考

发布了69 篇原创文章 · 获赞 133 · 访问量 44万+

猜你喜欢

转载自blog.csdn.net/mzl87/article/details/104131768