首页 > 解决方案 > 如何从现有安装中检索 SQL 产品密钥

问题描述

我们要检索 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。)

标签: sqlsql-servertsqlregistry

解决方案


这从注册表中读取:

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

推荐阅读