1

When using a traditional installation of SQL Server one has the Installed SQL Server features discovery report.

Googled and found no info if some equivalent was available for the core installation. It outputs to HTML so that is another reason why I believe it is not available (though one could still type its text).

So basically, I'd like to know if there is an equivalent on the core version, or what powershell (or command line) could be run to get the same info (version, installed features)?

  • 1
    Have you checked to see if there is a Summary.txt file in the "DriveLetter:\Program Files\Microsoft SQL Server\110\Setup Bootstrap\Log\" path? – KenWilson Sep 10 '14 at 16:09
  • 2
    More info on what @KenWilson is suggesting: msdn.microsoft.com/en-us/library/ms143702.aspx – RThomas Sep 10 '14 at 16:21
  • Thanks, should've checked it! that will do :) Still out of curiosity, can this be done through powershell? Know that services can be listed with this: Import-Module SQLPS $instanceName = "MSSQLServer" $managedComputer = New-Object 'Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer' $instanceName $managedComputer.Services | Select Name, Type, Status, DisplayName – JoseTeixeira Sep 10 '14 at 16:38
2

Just tested out running setup in Quiet mode on a Windows 2012 R2 Azure VM in Core mode to get the discovery report and it worked. Steps to reproduce:

  1. exit sconfig with option 15 (Exit to Command Line)
  2. Navigate to SQL Server installation media, in my case (and other Azure VMs from the gallery with SQL Server installed) it's "cd c:\SQLServer_12.0_Full"
  3. run setup, ie "setup.exe /action=RunDiscovery /Quiet"
  4. navigate to relevant bootstrap directory to see the file

enter image description here

I'm assuming you're really talking about Windows Server OS in Core mode not SQL Server Core Edition as that is a completely different thing really to do with licensing. Search for the keyword 'core' here for further info.

2

One way of doing that would be to query the registry location containing all currently installed programs and then filter out all that do not contain SQL SERVER in the name.

$array = @()

$computername="MachineName"

#Define the variable to hold the location of Currently Installed Programs

$UninstallKey="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall" 

#Create an instance of the Registry Object and open the HKLM base key

$reg=[microsoft.win32.registrykey]::OpenRemoteBaseKey('LocalMachine',$computername) 

#Drill down into the Uninstall key using the OpenSubKey Method

$regkey=$reg.OpenSubKey($UninstallKey) 

#Retrieve an array of string that contain all the subkey names

$subkeys=$regkey.GetSubKeyNames() 

#Open each Subkey and use GetValue Method to return the required values for each

foreach($key in $subkeys){

    $thisKey=$UninstallKey+"\\"+$key 

    $thisSubKey=$reg.OpenSubKey($thisKey) 

    $obj = New-Object PSObject

    $obj | Add-Member -MemberType NoteProperty -Name "ComputerName" -Value $computername

    $obj | Add-Member -MemberType NoteProperty -Name "DisplayName" -Value $($thisSubKey.GetValue("DisplayName"))

    $obj | Add-Member -MemberType NoteProperty -Name "DisplayVersion" -Value $($thisSubKey.GetValue("DisplayVersion"))

    $obj | Add-Member -MemberType NoteProperty -Name "InstallLocation" -Value $($thisSubKey.GetValue("InstallLocation"))

    $obj | Add-Member -MemberType NoteProperty -Name "Publisher" -Value $($thisSubKey.GetValue("Publisher"))

    $array += $obj

} 


$array | Where-Object { $_.DisplayName -like "*SQL SERVER*" } | select ComputerName, DisplayName, DisplayVersion, Publisher | ft -auto

This script was taken from the Hey, Scripting Guy! Blog and I modified to include -like "*SQL SERVER*" and also removed the loop through multiple computers. There may be an easier way. I hope this helps.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.