暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL Server: how to have the number of core-based licenses used on my environment?----SQL Server:如何在我的环境中使用基于内核的许可证数量?

原创 剩余价值 2022-04-22
729

(译)SQL Server:如何在我的环境中使用基于内核的许可证数量?

斯蒂芬·哈比2021 年 12 月 8 日数据库管理与监控,数据库管理,开发与性能SQL Server暂无评论

      原文作者:斯蒂芬·哈比

      原文链接:https://blog.dbi-services.com/sql-server-how-to-have-the-number-of-core-based-licenses-used-on-my-environment/  

    本周,一位客户要求我了解在他们的环境中使用了多少 SQL Server Standard 许可证。许可是基于核心的,不能用于 Sserver + Cals 许可。为了有个想法,我在此处
    创建了一个关于许可的 Microsoft 文档的脚本。

    此脚本适用于 SQL Server 2016、SQL Server 2017 和 SQL Server 2019。

    如果您有其他版本的 SQL Server,请在使用脚本前查阅微软文档,进行改编并与我分享(表情)

    如果您的主机服务器获得企业版许可(过去是数据中心版),则不需要此脚本。就我而言,查找我的客户使用的所有标准版很有用。

    Microsoft 的要求很简单: 在脚本中,我搜索了 SQL Server 版本、逻辑 CPU 计数、插槽数和每个插槽的内核数来进行计算。 重要提示:一个许可证适用于 2 个内核我通过SERVERPROPERTY (N'Edition') 搜索 SQL Server 版本的信息,并使用系统视图[sys].[dm_os_sys_info]搜索其他信息。



    有了这些信息,我将能够计算出每台服务器使用的许可证数量:

    • 第一种情况很容易使用 Express 和 Developer Edition,根本不需要许可证。
    • 第二种情况是,如果您的内核少于 4 个,则为 2 个许可证(2 个内核的 1 个许可证)
    • 第三种情况是如果你有一个标准版并且你被限制为 4 个插槽和 24 个内核
    • 第四种情况是如果你有一个网页版并且你被限制为 4 socket 和 16 cores

    默认适用于企业版,对 Web 版或标准版没有限制。

    这里是魔术查询:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    <font style="vertical-align: inherit;"><font style="vertical-align: inherit;">SELECT @@SERVERNAME 作为 [服务器名称],SERVERPROPERTY(N'Edition') AS 版本,cpu_count AS [逻辑 CPU 计数],  </font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

                 cpu_count/hyperthread_ratio AS [Sockets], hyperthread_ratio AS [Cores Per Socket],</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

        案子</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

           -- 开发人员版、快捷版、带有高级服务的快捷版 = 0 个许可证</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

           WHEN ((UPPER(Cast(SERVERPROPERTY(N'Edition') as sysname)) like N'%EXPRESS%') OR (UPPER(Cast(SERVERPROPERTY(N'Edition') as sysname)) like '%DEVELOPER%') )</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

                那么 0</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

           -- 少于 4 个内核 = 标准版和企业版的 2 个许可证</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

           何时 ((cpu_count/2)<4)</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

                那么 2</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

           -- 标准版仅限 4 个插槽和 24 个内核</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

           WHEN ((cpu_count/hyperthread_ratio)> 4) AND UPPER(Cast(SERVERPROPERTY(N'Edition') as sysname)) like N'%STANDARD%' AND 4*(hyperthread_ratio/2) <= 24</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

                那么 (4*(hyperthread_ratio))/2  </font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

           WHEN ((cpu_count/hyperthread_ratio)<= 4) AND UPPER( Cast(SERVERPROPERTY(N'Edition') as sysname)) like N'%STANDARD%' AND 4*(hyperthread_ratio/2) > 24</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

                那么 24/2</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

           -- 网页版仅限 4 个插槽和 16 个内核</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

           WHEN ((cpu_count/hyperthread_ratio)> 4) AND UPPER(Cast(SERVERPROPERTY(N'Edition') as sysname)) like '%WEB%' AND 4*(hyperthread_ratio/2) <= 16</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

                那么 (4*(hyperthread_ratio))/2  </font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

           WHEN ((cpu_count/hyperthread_ratio)<= 4) AND UPPER(Cast(SERVERPROPERTY(N'Edition') as sysname)) like '%WEB%' AND 4*(hyperthread_ratio/2) > 16</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

                那么 16/2</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

           --企业逻辑核心(无限)</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

           否则 cpu_count/2   </font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

         END as [许可证数量]</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

    来自 [sys].[dm_os_sys_info]</font></font>

    我通过 CMS(中央管理服务器)运行查询,并分析了一些非常有趣的结果: 我们可以对这个表结果进行分析:

    • 对于 server1,只有 2 个核心,但您需要至少许可 4 个核心,然后需要 2 个许可
    • server2 和 server3 没问题,是企业版 License Number of License = 核心数/2
    • server4是标准版,4核4插口,没问题 License数=核数/2
    • 对于 server5,标准版但有 6 个插槽,则限制为 4,然后许可证数 = 4*4cores/2
    • 对于 server6 和 server 7,我们有 Express Edition 和 Developer Edition,不需要许可证

    我不会测试所有案例,但如果您使用它,我会对您的反馈非常感兴趣。
    我希望这也可以帮助您更好地了解您在环境中使用的基于内核的许可证。

    发表评论

    最后修改时间:2022-04-24 10:22:15
    「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
    关注作者
    【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论