Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

PowerShell - Répertorier toutes les instances SQL sur mon système ?

J'ai trouvé que (pour moi du moins) aucune des réponses ci-dessus ne renvoyait mon instance SQL Express. J'ai 5 instances nommées, 4 SQL Server complets, 1 SQL Express. Les 4 full-fat sont inclus dans les réponses ci-dessus, le SQL Express ne l'est pas. DONC, j'ai fouillé un peu sur Internet et je suis tombé sur cet article par James Kehr, qui répertorie les informations sur toutes les instances de SQL Server sur une machine. J'ai utilisé ce code comme base pour écrire la fonction ci-dessous.

# get all sql instances, defaults to local machine, '.'
Function Get-SqlInstances {
  Param($ServerName = '.')

  $localInstances = @()
  [array]$captions = gwmi win32_service -computerName $ServerName | ?{$_.Name -match "mssql*" -and $_.PathName -match "sqlservr.exe"} | %{$_.Caption}
  foreach ($caption in $captions) {
    if ($caption -eq "MSSQLSERVER") {
      $localInstances += "MSSQLSERVER"
    } else {
      $temp = $caption | %{$_.split(" ")[-1]} | %{$_.trimStart("(")} | %{$_.trimEnd(")")}
      $localInstances += "$ServerName\$temp"
    }
  }
  $localInstances
}