如何从现有安装中检索 SQL 产品密钥

问题描述 投票:0回答:2

我们想要检索 SQL Server 的产品密钥。 我们有多个版本的 SQL,并且了解每个版本的产品密钥路径都会发生变化。我们不想对路径进行硬编码,因此需要寻找通用逻辑。 由于每个版本都有不同的文件夹结构来存储产品密钥,因此我们使用 Switch 语句作为

switch (majorVersion)
        {
            case "8":
                registryPath = @"SOFTWARE\Microsoft\Microsoft SQL Server\80\Registration";              
                break;
            case "9":
                registryPath = @"SOFTWARE\Microsoft\Microsoft SQL Server\90\ProductId";        
                break;
            case "10":
                registryPath = @"SOFTWARE\Microsoft\Microsoft SQL Server\100\Tools\ClientSetup";           
                break;
            case "11":
                registryPath = @"SOFTWARE\Microsoft\Microsoft SQL Server\110\Tools\ClientSetup";                
                break;
            case "12":
                registryPath = @"SOFTWARE\Microsoft\Microsoft SQL Server\120\Tools\ClientSetup";
                break;
            case "13":
                 registryPath = @"SOFTWARE\Microsoft\Microsoft SQL Server\130\Tools\Setup";
                break;
            case "13.1":
                registryPath = @"SOFTWARE\Microsoft\Microsoft SQL Server\130\Tools\Setup\Client_Components_Full\1033";
                break;
            case "14":
                registryPath = @"SOFTWARE\Microsoft\Microsoft SQL Server\140\Tools\Setup";
                break;
            default:
                registryPath = @"SOFTWARE\Microsoft\Windows\CurrentVersion";
                break;
        }

想要避免此切换并在不指定硬编码路径的情况下检索密钥。

我们如何获得任何已安装的sql版本的正确产品密钥?

(仅寻找 sql 脚本解决方案,而不是 power shell。)

sql sql-server tsql registry
2个回答
0
投票

以动态方式执行此操作的技巧是查看

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names
并读取子项的值。例如MSSQL14.MSSQLSERVER、SSRS、...

使用

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL14.MSSQLSERVER\Setup
中的子键值读入
Version
值。需要版本号来更改旧版本的行为。

当前两位数字大于11时,读入同一位置的

DigitalProductID
值。

这里是一些 C# 示例代码Max Volkov 的博客 对此进行了进一步解释。它还概述了有关二进制密钥的 Base24 解码的一些问题。

可以在 T-SQL 中重新创建代码,但对我来说,它似乎不是实现这一切的理想语言。

有一个 cmdlet Get-DbaProductKey,是 https://github.com/dataplat/dbatools 的一部分。

由于此页面在搜索结果中排名靠前,因此这是检索密钥的另一种方法:

了解如何查找 SQL Server Reporting Services 的产品密钥 (SSRS) 2017 和 2019,以便您可以在生产环境中安装服务器 环境。

https://learn.microsoft.com/en-us/sql/reporting-services/install-windows/find-reporting-services-product-key-ssrs


-2
投票

这从注册表中读取:

Declare @Val nvarchar(4000) 

Exec master .dbo.xp_instance_regread
    N'HKEY_LOCAL_MACHINE',
    N'Software\Microsoft\MSSQLServer\Setup',
    N'ProductCode', 
    @Val output

Select @Val As ProductCode
© www.soinside.com 2019 - 2024. All rights reserved.