DBA Shell 3: Instalando o SQL Server com Powershell

Post 3/3. Este post é parte da série: DBA Shell
Tempo de leitura estimado: 4 minutos

Instalar o SQL Server é uma tarefa essencial que qualquer DBA deve saber fazer. E existem várias maneiras de fazer isso.

A mais comum é usar a interface gráfica! Porém, esta maneira pode não ser a mais rápida devido ao tempo que a mesma demora para carregar e à quantidade de interações que vocês precisa fazer! E também, já se perguntou como seria chato se você precisasse instalar muitas instâncias de uma só vez?

Minhas instâncias de testes, instaladas com o script deste post

Ao contrário do que muitos pensam, o SQL Server permite que você faça a instalação via linha de comando, e posui uma série de parâmetros que você pode enviar para o setup.exe
A documentação completa se encontra em: https://docs.microsoft.com/en-us/sql/database-engine/install-windows/install-sql-server-from-the-command-prompt?view=sql-server-ver15

Mesmo usando o setup.exe, você poderia gastar tanto tempo quanto a interface, ou até mais! Já que são tantas opções para escolher!

Para facilitar nossa vida, desenvolvi um script chamado Install-SQLServer.

Eu tenho usado este script há alguns anos, e venho constantemente evoluindo o mesmo. O objetivo é facilitar ao máximo a sua vida, pedindo o mínimo de informação possível.

Dentre as várias features deste script, destaco as seguinte:

  • Possui uma série de valores default para maioria dos parâmetros, diminuindo suas interações.
    • Você pode escolher as conta de serviços, collation, diretório de instalação, nome da instância, etc.
  • Em caso de erros, lê o error log gerado pelo instalador para você, facilitando a sua vida na hora de encontrar  as causas da falha

 

Como instalar

  • Baixe o seguinte arquivo Install-SQLServer
    • Talvez você tenha que clicar com o botão direito do mouse no seu navegador e escolher “salvar como”.
    • Salve como Install-SQLServer.ps1
    • Copie o arquivo para o servidor onde irá realizar a instalação.

Preparação para a instalação

Como uma instalação qualquer, incluindo interface gráfica, você também precisa se preparar:

  • Você precisar ter o diretório do instalador disponível! (Para os exemplos deste artigo, considere E:\)
    • Se a mídia estiver em formato .iso, você deve baixá-la e mandar montar (o próprio Windows faz isso, basta clicar com o botão direito no arquivo)
  • Configuração da instância:
    • Senha do sa
    • Nome e senha da conta de serviço (caso queria usar uma diferente da padrão do instalador)
    • Nome da instância (caso não seja uma instância default)
    • Diretório de instalação dos binários (caso seja diferente do padrão do instalador)
    • Collation (caso não seja Latin1_General_CI_AS, que é o padrão do script)
  • Garanta que o powershell esteja liberado para execução de script
    • A configuração default do powershell é não permitir a execução de scripts.
    • Você pode contornar isso de várias formas, apresento uma delas:
      • Mude a política (você precisar ser Administrador)

Um passo a passo

  1. Suponha que tenha copiado para C:\temp de algum servidor e queria instalar uma instância nomeada chamada PROD01
  2. Abra o powershell (garanta que pode executar scripts)
  3. Mude o diretório atual para o diretório onde copiou o script:
  4. Digite o seguinte comando (repare que o ponto e a barra no início do comando devem existir):
    No comando acima, você irá instalar um SQL Server cujo instalador se encontra em E:\, e o nome da instância será PROD01.
    • -Setup especifica o caminho para o diretório do instalador
    • O parâmetro -AddCurrentAsAdmin adiciona o usuário que está instalando como sysadmin
    • -InstanceName é o nome da instância
    • -LoadProductKey faz o script procurar a product key dentro do diretório do instalador
      Lembre-se: A versão e edição da instância a ser instalada vai depender do instalador que você disponibilizou!
  5. Na primeira execução, o script irá pedir a senha do sa. A conta de serviço usada será a padrão do instalador (o parâmetro -ServiceAccount não foi especificado)

     

  6. A saída do comando acima será algo semelhante a esta:

  7. Por padrão, o comando exibe um resumo dos parâmetros que serão enviado ao setup.exe!
    Para que o instalador inicie de verdade, repita o comando utilizando o parâmetro -Execute:

    O progresso será exibido:

  8. Caso haja erros durante a instalação, o script irá reportar:

  9. Caso saia tudo certo, você receberá este resultado:

 

 

Outros exemplos de parâmetros:

 

  • Instância DEFAULT
    Para uma instância DEFAULT, basta retirar o parâmetro “-InstanceName”
  • Especificando uma Product key
    O parâmetro -ProductKey deve ser usado quando quiser especificar a chave de ativação.
     
  • Especificando uma conta de serviço de domínio
    O parâmetro -ServiceAccount  permite especificar a conta de serviço. Na primeira execução, ele irá solicitar a senha.
    O script também irá validar se a conta é válida! Caso encontre erros, os mesmos serão reportados e a instalação não irá proceder.
  • Especificando uma conta de serviço local (A conta local é construída com o nome da máquina)
     
  • Especificando o collation
     

Para obter mais ajuda consulte o help do arquivo ou os comentários.

Se encontrar algum problema, submeta uma issue no repositório do github

E lembre-se, apesar de facilitar a sua vida, sempre planeje e revise sua instalação, principalmente em ambientes de produção. Utilize por sua própria conta e risco.

Navegue na série << DBA Shell 2: Obtendo mais informações sobre arquivos
Compartilhe este post!

Comments ( 2 )

  1. / ReplyCristiano Cricas
    Valeu demais, Rodrigo! Estou automatizando algumas rotinas e, a falta de um cmdlet pro SQL Server me trouxe até seu artigo! Tanto seu script quanto o link para a documentação da MS estão me ajudando muito!
    • / ReplyRodrigo Ribeiro Gomes
      Aí sim! eu já fiz algumas melhorias desde essa versão. Acabei de jogar atualizado no git! E puder, compartilha no que está ajudando ou se tiver dúvida, deixa o comment ai que eu respondo assim que possível!

Leave a Reply