比早期版本更喜欢 SQL Server 2016 的客观原因是什么?

Mik*_*lsh 29 sql-server upgrade sql-server-2016

由于自 SQL Server 2005 或 2008 年以来,Microsoft 使 SQL Server 版本升级更加频繁,因此许多公司发现很难确定何时升级是“必须的”!当升级是“很高兴”时

本着一些较早的问题的精神,询问为什么更喜欢各种较新版本的 SQL Server 而不是以前的版本,公司可能会考虑将 SQL Server 2016 升级到较早版本甚至更高版本的客观技术或业务原因是什么?发布如 SQL Server 2014?

(这个关于 SQL Server 2012 与 SQL Server 2008 相比的问题,或者这个关于 SQL Server 2012 与 SQL Server 2005 相比的问题,作为这个问题精神的例子浮现在脑海中。他们的答案还扩展了这里的一些原因从 SQL Server 2008 或 SQL Server 2005 开始的公司)

Mik*_*lsh 35

考虑升级到 SQL Server 2016 的原因有很多。大多数情况下,这些原因会因 SQL Server 的版本而异。这不会是一个详尽的清单,但我会给出一些我想到的原因。包括我们刚刚在 2016 年 11 月发布的 SQL Server 2016 SP1 中了解到的一个非常重要的原因。期待看到我错过的扩展或功能的其他答案。

重要原因:标准版现在提供许多功能

2016 年 11 月 16 日,Microsoft 宣布发布 SQL Server 2016 的 Service Pack 1。与此公告一起,他们还宣布以前保留给 Enterprise Edition 客户的许多功能将在SQL Server 的所有版本中可用- Standard、Express(带有少数例外)、Web 以及企业版。

对于开发和销售具有 SQL Server 后端的软件的软件供应商来说,这应该是升级的一个非常令人信服的理由——许多功能现在可供他们的客户使用,无论他们的 SQL Server 许可版本如何。这对于必须保持审计或随着时间的推移添加到产品中的其他安全增强功能的行业的公司来说也很有吸引力。

以我的拙见,在使用 SQL Server 超过 17 年的时间里,这使得 SQL Server 2016 SP1 很可能是自我开始使用 6.5 版的 SQL Server 以来最引人注目的升级。(别误会,2000 年、2005 年和 2012 年也有他们那个时代的优点!)

查看下面的列表,但作为您现在可以在标准版中使用的一些功能的快速示例,您拥有以下功能:压缩、变更数据捕获、细粒度审计、行级安全、始终加密、分区、数据库快照、内存中 OLTP、列存储。

SQL Server 2016 新功能的具体原因

我试图将本节中的原因仅保留在 SQL Server 2016 中引入的功能。我也在这个答案中只描述了核心引擎的增强,而不是报告、分析、数据集成等。

安全相关

行级安全性- 我有许多客户希望能够逐行实施安全性。“用户 x 可以查看该行的数据,但不能查看该行的数据”。许多这些客户已经创建了函数和/或基于复杂视图的结构来实现这一点。在 SQL Server 2016 中有内置的谓词和安全策略可用于帮助这里。您可以在此处阅读有关 RLS 的更多信息。

动态数据屏蔽- 这在纸面上听起来不错,但我想知道它是否会被证明不如其他两个安全领域的变化有用。基本上,您可以根据调用者的权限在查询时动态屏蔽或混淆数据。要混淆的数据量是可编程的。例如,在 Microsoft 使用的示例中,您可以屏蔽信用卡号码的最后四位数字以外的所有数字,以便呼叫中心的接听电话可以验证最后四位数字。您可以在此处阅读更多相关信息。

始终加密- 也许您听说过有关透明数据加密的一些缺陷或担忧。也许您不想使用 TDE,因为担心拥有 SA 访问权限的人可以根据需要进行解密。Always Encrypted 是作为一项功能发布的,它将解密/加密功能置于调用 SQL Server 的应用程序的手中。SQL Server 中的静态数据是加密的。由于这种方法,流向 SQL Server 的飞行数据也被加密。您可以在此处阅读有关始终加密的更多信息。

HA/DR 功能

这里出现了一些功能。一种是能够在 SQL Server Standard 中使用 Always On 可用性组 - 基本可用性组。这是必要的,因为镜像已被弃用且没有替代品。该功能仅限于副本数量和同步方法。您可以在此处阅读更多内容。

这并不是对可用性组的唯一更改(顺便说一下,它是在 SQL Server 2012 中引入的)。还有一些其他更改(您可以在此处查看包含指向其他更改的链接的详尽列表):

  1. 支持组托管服务帐户。
  2. 支持分布式事务(有一些注意事项)。
  3. 读取意图连接可以在只读副本之间进行负载平衡。
  4. 现在可以在自动故障转移中涉及三个副本。
  5. 加密数据库现在可以加入 Always On 可用性组。
  6. 性能改进——SQL Server 2016 的部分主题是“它只是更快”——这是微软营销的旋转,但它在市场上得到了证明。对可用性组性能进行了多项改进。

安装程序修复了一些常见错误

从 SQL Server 2016 开始的 SQL Server 安装程序修复了配置 TempDB 时出现的一些常见错误。现在,设置 GUI 将指导您完成最佳实践配置。

查询存储

SQL Server MVP 和调谐器的最爱。此功能是一种工具,可让您深入了解引擎如何执行查询。在跟踪查询计划随时间变化引起的性能问题时特别有用。这可以是查看的工具,也可以是修复的工具。有助于简化一些性能调优概念。您可以在此处阅读更多相关信息。

时态表

我经常看到需要问一个问题,比如“这个数据在某某日期是什么样子的”。时态表是一种方法。肯定有一些仓储用例。在此处查看更多信息

列存储改进

在其他几个方面,对我来说是三个重大改进。一种是可更新的非聚集列存储索引。SQL Server 2014 为我们提供了可更新的群集,但现在我们有了可更新的非群集。SQL Server 2016 还允许在内存中 OLTP 表上使用列存储索引。SQL Server 2016 中现在可以将传统的 B 树非聚集索引放置在聚集列存储索引上。

内存中 OLTP 中的其他功能改进

In-Memory 表或本机编译过程中不支持的一些功能现在可用。一些补充(但请参阅本文了解更多信息):UNIQUE Con​​straints、Check Constraints、DML 中的 OUTPUT 子句、外部联接、选择列表中的子查询、SELECT DISTINCT、UNION/UNION ALL 等等。

一般性能改进

与每个版本一样,SQL Server 2014 对几个关键领域的性能进行了一些改进。SQL Server 2016 对整个产品进行了额外的关键增强。这包括消除了许多客户在升级到 SQL Server 2014 时由于基数估计器更改而有时会遇到的一些痛苦。发动机上下进行了几次更改,以提高日常性能。微软的 CSS 团队一直在他们的博客上讨论这个问题。您只需搜索“SQL Server 2016 它运行得更快”即可。本系列的示例博客文章在这里

我已经在升级的客户中看到了这种情况,并希望看到它越来越多。

一些缺点

任何升级显然都有缺点。这可能是因为我以顾问的身份以此为生,但我认为这些缺点都非常易于管理,并且实际上只是考虑“先计算成本”项目以了解和管理。

升级在一般-一般的升级意味着您将引入新的功能。您需要能够测试它们。在不同版本的 SQL Server 之间,不推荐使用各种功能。这并不意味着它们会立即消失,而是意味着它们可以在未来的版本中使用,通常是三个版本之后。例如文本数据类型,或做外连接与在where子句中*==*如果您来自在 SQL Server 2000 兼容模式下运行的数据库,则不支持语法。说到兼容模式 - 它们也只返回三个版本。因此,如果您的数据库在 80 (SQL Server 2000) 或 90 (SQL Server 2005) 兼容模式下运行,则它们不能像那样进入 SQL Server 2016。因此,如果您一直在避免进行该测试和偷偷摸摸的兼容性级别,那么是时候进行清算了。

再次。那是很容易的事情。有一些工具可以帮助捕获和测试数据,看看有什么问题。有 perfmon 计数器可以帮助查找已弃用的功能。

许可- 这里有两件事:

  1. 基于核心 - 如果您习惯于 SQL Server 2012 之前的许可条款,那么 CPU 许可证就是 - CPU 许可证。自 SQL Server 2012 以来,基于 CPU 的许可证一直基于核心。所以那里有一个调整期。此外,新许可证的企业版(2012 年首次推出时有一些例外)必须在核心级别获得许可 - 没有服务器 + 企业 CAL。这里云上的一线希望就是我所说的 SP1 允许非企业 SKU 中的企业功能。如果您需要超过 128GB 的​​ RAM。如果您需要高级扫描性能改进。如果您需要超过 32GB 的 RAM 用于列存储或内存中,那么您正在寻找 Enterprise。如果没有?而且您不需要在线索引重建?标准版可能只适合您,现在这些新功能对您来说可能更适合您。
  2. 软件保障 (SA) - 如果您没有购买 SA,则必须购买新的。因此,如果您正在运行 SQL Server 2005 并且您担心自己没有主流支持,并且离扩展支持的结束不远了,并且希望您拥有现在可用的功能,那么您不能像 Service Pack 一样升级。如果您从未购买过 SA,那么您的升级就是新购买。没关系,真的很值得。但它必须达到预算。

概括

还有更多原因,比如 JSON 支持、R 的引入等。但这些只是我考虑升级的一些原因。同样,最重要的一项是能够在 Standard 甚至 Express 中使用许多以前仅限企业版的功能。我已经在我的客户中看到了巨大的成功故事,我期待看到更多。

如果您使用的是 SQL Server 2005 或 2008,则列表更大。AlwaysOn 可用性组于 2012 年问世,SQL Server 2012 中的列存储索引,SQL Server 2014 中的内存中 OLTP 等。

更不用说如果您仍在使用 SQL Server 2005 或 2008,您就没有主流支持。

  • 所有这些 + 真正的商业原因 - 最长的生命周期。还在用SQL2000的人,windows不能升级,旧windows没有安装在新服务器上,这些问题一一增长。对于业务 - JSON 和其他,它只是 IT 玩具......停止支持他们理解 (2认同)