Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

PowerShell - Listar todas as instâncias do SQL no meu sistema?


Descobri que (pelo menos para mim) nenhuma das opções acima retornou minha instância do SQL Express. Eu tenho 5 instâncias nomeadas, 4 SQL Server completo, 1 SQL Express. Os 4 full-fat estão incluídos nas respostas acima, o SQL Express não. Então, eu pesquisei um pouco na internet e encontrei este artigo por James Kehr, que lista informações sobre todas as instâncias do SQL Server em uma máquina. Usei este código como base para escrever a função abaixo.
# 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
}