sql - 如何从现有安装中检索 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。)
解决方案
这从注册表中读取:
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
推荐阅读
- react-native - 强制视图位于正在显示的任何内容之上
- angular - Apache2 Angular11 应用程序不会路由到新页面
- ruby-on-rails - 有没有办法用 Ruby 来防止 CPU 在不阻塞任何东西的情况下空闲
- html - 子元素没有获得悬停效果
- php - 在自定义页面模板 WordPress 上搜索
- python - 在python中用json重新创建一个简化的类对象
- python - 将 pytest 函数参数传递给夹具
- git - Powerapps 解决方案无法通过 git 向开发人员提交最新更改
- javascript - Gulp 文件错误:AssertionError [ERR_ASSERTION]:必须指定任务函数
- debugging - 附加调试器时,Office Addin 任务窗格会自动重新加载