A volte può essere necessario recuperare il Product Key del proprio SQL Server da una installazione esistente: il caso più comune è quello di un Server di una certa età del quale si è perso ogni ricordo di configurazione e che si ha improvvisamente necessità di trasferire altrove, ma può anche capitare di smarrire semplicemente il codice seriale e trovarsi nell'esigenza di doverlo recuperare.
Fortunatamente, l'informazione può essere agevolmente ottenuta tramite l'esecuzione di questo script PowerShell realizzato da Jacob Bindslet:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
function GetSqlServerProductKey { ## function to retrieve the license key of a SQL 2008 Server. param ($targets = ".") $hklm = 2147483650 $regPath = "SOFTWARE\Microsoft\Microsoft SQL Server\100\Tools\Setup" $regValue1 = "DigitalProductId" $regValue2 = "PatchLevel" $regValue3 = "Edition" Foreach ($target in $targets) { $productKey = $null $win32os = $null $wmi = [WMIClass]"\\$target\root\default:stdRegProv" $data = $wmi.GetBinaryValue($hklm,$regPath,$regValue1) [string]$SQLver = $wmi.GetstringValue($hklm,$regPath,$regValue2).svalue [string]$SQLedition = $wmi.GetstringValue($hklm,$regPath,$regValue3).svalue $binArray = ($data.uValue)[52..66] $charsArray = "B","C","D","F","G","H","J","K","M","P","Q","R","T","V","W","X","Y","2","3","4","6","7","8","9" ## decrypt base24 encoded binary data For ($i = 24; $i -ge 0; $i--) { $k = 0 For ($j = 14; $j -ge 0; $j--) { $k = $k * 256 -bxor $binArray[$j] $binArray[$j] = [math]::truncate($k / 24) $k = $k % 24 } $productKey = $charsArray[$k] + $productKey If (($i % 5 -eq 0) -and ($i -ne 0)) { $productKey = "-" + $productKey } } $win32os = Get-WmiObject Win32_OperatingSystem -computer $target $obj = New-Object Object $obj | Add-Member Noteproperty Computer -value $target $obj | Add-Member Noteproperty OSCaption -value $win32os.Caption $obj | Add-Member Noteproperty OSArch -value $win32os.OSArchitecture $obj | Add-Member Noteproperty SQLver -value $SQLver $obj | Add-Member Noteproperty SQLedition -value $SQLedition $obj | Add-Member Noteproperty ProductKey -value $productkey $obj } } |
Lo script funziona con tutte le versioni e le edizioni di SQL Server dalla 2005 in poi: SQL Server 2005, SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 e SQL Server 2014. Fate attenzione, però: nel caso di Sql Server 2014, Microsoft ha spostato il nodo DigitalProductID all'interno della chiave di registro relativa all'istanza dell'installazione di Sql Server: per questo motivo se volete usare lo script di cui sopra con Sql Server 2014 dovrete sostituire la linea 6 con la linea seguente:
1 |
$regPath = "SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.[YOUR SQL INSTANCE NAME]\Setup" |
Per eseguire lo script è sufficiente compiere queste operazioni:
- Lanciate un prompt PowerShell (Avvio > Esegui (oppure Start > Run se il sistema è in lingua inglese), quindi digitate powershell e premete invio.
- Copiate il testo della funzione di cui sopra e incollatelo direttamente all'interno del prompt.
- Premete INVIO una o più volte, fino a quando il prompt non tornerà disponibile.
- scrivete GetSqlServerProductKey e premete INVIO.
Se tutto è stato eseguito correttamente il Prompt si riempirà di una serie di informazioni nel seguente modo:
Potrete così visualizzare la versione di SQL Server installata, l'architettura, la build, l'edizione e, soprattutto, il vostro Product Key.
Per il momento è tutto: felice recupero!