Como qualquer outro software, O Microsoft SQL Server deve ser mantido atualizado. A Microsoft lança rotineiramente service packs para SQL Server que precisam ser instalados. Para instalar um service pack, pode se conectar a um console remoto do SQL Server, execute o instalador e clique no assistente, ou você pode fazer da maneira mais fácil.
Cada instalador do Service Pack do SQL Server oferece suporte a instalações silenciosas. Este tipo de instalação permite que você use a linha de comando para iniciar uma instalação. Ao mesmo tempo, Ele também permite que você automatize o procedimento de instalação do service pack em um, dezenas ou centenas de servidores SQL ao mesmo tempo.
Depois de descobrir como instalar um service pack silenciosamente via linha de comando, você pode criar uma ferramenta de automação com PowerShell para implementar service packs com rapidez e eficiência.
Pré-requisitos
Esta postagem do tutorial cobre como implementar Service Packs do SQL Server com PowerShell de um computador remoto. Para seguir em frente, certifique-se de ter o seguinte:
- Um SQL Server para atualizar (a versão não importa)
- Permissões de usuário para instalar um service pack no SQL Server
- Remoto PowerShell disponível no servidor SQL remoto
- Um instalador de service pack baixado (você pode encontrar todos os pacotes de serviço aqui.)
- Um conhecimento de nível intermediário de scripts PowerShell
Se você tem tudo em ordem, Vamos começar!
Para instalar um service pack silenciosa e remotamente, leva cerca de cinco etapas:
- Certifique-se de que o servidor não tenha uma reinicialização pendente.
- Copie o instalador do service pack para o servidor SQL remoto.
- Extraia o instalador compactado.
- Inicie o instalador silenciosamente.
- Limpe o instalador.
Teste de reinicialização pendente
Porque um service pack não pode ser instalado a menos que o Windows Server não esteja esperando para ser reiniciado, você deve verificar esta situação com antecedência. Uma maneira rápida de fazer isso é usar o PowerShell. Eu prefiro usar uma função chamada Teste com reinicialização pendente. Ao apontar esta função para um servidor, retorna um verdadeiro simples / Falso, que permite saber se o servidor está esperando para ser reiniciado.
Copie o instalador do Service Pack para o SQL Server
A seguir, copiar o instalador que você baixou da Microsoft para o servidor sql remoto. Presumo que o computador do qual você está copiando o instalador está no mesmo domínio de diretório ativo que o servidor sql. Se ambos os computadores estiverem no mesmo domínio do Active Directory, você não precisa se preocupar em fornecer credenciais alternativas para seus comandos PowerShell.
Assumindo o comando de que o pacote de serviço está em seu disco rígido local é C: SQLServerServicePacks SQL2016SP2.exe e seu servidor SQL remoto é nomeado SQLSRV, abrir um console powershell e executar:
Copy-Item -Path C:SQLServerServicePacksSQL2016SP2.exe -DestinationPath SQLSRVc$
você deve agora ter o instalador de pacote de serviço na raiz da unidade c em seu servidor sql.
Extraia o instalador compactado
Uma vez que o instalador esteja no servidor, você pode extrair o conteúdo do instalador. Para extrair o instalador, usar os argumentos /extract:"C:TempSQLSP" /quiet
. Com o nome do arquivo do exemplo anterior, executar o seguinte código no servidor sql:
C:SQLServerServicePacksSQL2016SP2.exe /extrato:"C:TempSQLSP" /quieto
Apesar disto, porque você está instalando um pacote de serviço remotamente, você não precisa abrir uma sessão de console rdp no servidor para fazê-lo. Em seu lugar, você pode usar uma função chamada Programa de invocação, que é o recurso powershell que permite que você execute processos remotos.
você pode executar extrair o conteúdo do pacote de serviço no servidor sql remoto, usando o seguinte código:
Programa de invocação -ComputerName SQLSRV -FilePath 'C:SQLServerServicePacksSSQL2016SP2.exe' -ArgumentList "/extrair:"C:TempSQLSP" /quieto"
Execute o instalador do pacote de serviço
Neste ponto, você está pronto para iniciar o procedimento de instalação. Usando o Invoke-Program
Função PowerShell novamente, execute o configuração.exe instalador que foi extraído do arquivo original e fornecer /q
e /allinstances
mudanças para ele. Diz ao instalador do pacote de serviço para não abrir uma janela de instalação e corrigir todas as instâncias do SQL no servidor.
Você pode ver um exemplo de como iniciar o instalador aqui:
Invoke-Program -ComputerName SQLSRV -FilePath "C:TempSQLSPsetup.exe" -ArgumentList "/q /allinstances"
Limpe o instalador
Se tudo correr bem, você terá um servidor sql atualizado após o acabamento do instalador. Apesar disto, você tem uma última tarefa para executar: limpo.
Supondo que você não queira deixar os arquivos que você tinha transferido anteriormente para o servidor, exclua-os com o comando Remove-Item PowerShell. Apesar disto, você deve fornecer o caminho para a pasta que extraiu o arquivo original e o instalador original. Veja como fazer:
Remover-item -Caminho "SQLSRVc$SQLServerServicePacksSQL2016SP2.exe","SQLSRVc$tempSQLSP" -Recurse -Força
Resumo
Você instalou remotamente um Service Pack do SQL Server usando nada mais do que um script e arquivo do PowerShell. Agora que você tem as habilidades para atualizar um SQL Server para um servidor, você pode facilmente estender este código a vários servidores.
Para implementar um service pack em vários servidores, usar construções PowerShell como um loop foreach. Coloque o código que você aprendeu nesta postagem dentro de um loop foreach para processar rapidamente um ou cem servidores SQL ao mesmo tempo!!