Поиск по сайту:

Как бесплатно развернуть пакеты обновления SQL Server с помощью PowerShell


Как и любое другое программное обеспечение, Microsoft SQL Server необходимо постоянно обновлять. Microsoft регулярно выпускает пакеты обновлений для SQL Server, которые необходимо установить. Чтобы установить пакет обновления, вы можете либо подключиться к удаленной консоли SQL Server, запустить программу установки и щелкнуть мастер, либо сделать это простым способом.

Каждый установщик пакета обновления для SQL Server поддерживает автоматическую установку. Этот тип установки позволяет запускать установку с помощью командной строки. Кроме того, он также позволяет автоматизировать процесс установки пакета обновления на один, десятки или сотни SQL-серверов одновременно.

Как только вы поймете, как установить пакет обновления без вывода сообщений с помощью командной строки, вы сможете создать инструмент автоматизации с помощью PowerShell для быстрого и эффективного развертывания пакетов обновления.

Предпосылки

В этой пошаговой статье рассказывается, как развернуть пакеты обновлений SQL Server с помощью PowerShell с удаленного компьютера. Чтобы продолжить, убедитесь, что у вас есть следующее:

  • SQL Server для обновления (версия не имеет значения)
  • Разрешения пользователя на установку пакета обновления на SQL Server
  • Удаленное взаимодействие PowerShell доступно на удаленном SQL Server
  • Загружен установщик пакета обновления (все пакеты обновления можно найти здесь).
  • Знание сценариев PowerShell на среднем уровне

Если у вас все в порядке, приступим!

Для автоматической и удаленной установки пакета обновлений требуется примерно пять шагов:

  1. Убедитесь, что сервер не ожидает перезагрузки.
  2. Скопируйте установщик пакета обновлений на удаленный SQL Server.
  3. Извлеките сжатый установщик.
  4. Запустите программу установки в автоматическом режиме.
  5. Очистите программу установки.

Проверка ожидания перезагрузки

Поскольку пакет обновления не может быть установлен, если Windows Server не ожидает перезагрузки, вы должны заранее проверить эту ситуацию. Быстрый способ сделать это — использовать PowerShell. Я предпочитаю использовать функцию Test-PendingReboot. Указав эту функцию на сервер, она возвращает простое значение True/False, сообщая вам, ожидает ли сервер перезагрузки.

Скопируйте установщик пакета обновления на SQL Server.

Затем скопируйте установщик, загруженный с сайта Microsoft, на удаленный SQL Server. Я предполагаю, что компьютер, с которого вы копируете установщик, находится в том же домене Active Directory, что и SQL Server. Если оба компьютера находятся в одном домене Active Directory, вам не нужно беспокоиться о предоставлении альтернативных учетных данных для ваших команд PowerShell.

Предположим, что на вашем локальном жестком диске находится пакет обновления C:SQLServerServicePacksSQL2016SP2.exe, а удаленный SQL Server называется SQLSRV. Откройте консоль PowerShell и выполните:

Copy-Item -Path C:SQLServerServicePacksSQL2016SP2.exe -DestinationPath \SQLSRVc$

Теперь у вас должен быть установщик пакета обновления в корне диска C вашего SQL Server.

Извлеките сжатый установщик

Как только установщик окажется на сервере, вы сможете извлечь его содержимое. Чтобы извлечь установщик, используйте аргументы /extract:\C:TempSQLSP\ /quiet. Используя имя файла из предыдущего примера, запустите на SQL Server следующий код:

C:SQLServerServicePacksSQL2016SP2.exe /extract:"C:TempSQLSP" /quiet

Однако, поскольку вы устанавливаете пакет обновления удаленно, вам не нужно открывать сеанс консоли RDP на сервере для этого. Вместо этого вы можете использовать функцию Invoke-Program, которая представляет собой функцию PowerShell, позволяющую выполнять удаленные процессы.

Вы можете запустить извлечение содержимого пакета обновления на удаленном SQL Server, используя следующий код:

Invoke-Program -ComputerName SQLSRV -FilePath 'C:SQLServerServicePacksSQL2016SP2.exe' -ArgumentList "/extract:"C:TempSQLSP" /quiet"

Запустите установщик пакета обновления

На этом этапе вы готовы начать процесс установки. Снова используя функцию PowerShell Invoke-Program, запустите установщик setup.exe, извлеченный из исходного файла, и введите /q и /allinstances переключается на него. Он сообщает установщику пакета обновления не открывать окно установки и исправлять все экземпляры SQL на сервере.

Вы можете увидеть пример запуска установщика здесь:

Invoke-Program -ComputerName SQLSRV -FilePath "C:TempSQLSPsetup.exe" -ArgumentList "/q /allinstances"

Очистить установщик

Если все пойдет хорошо, у вас будет обновленный SQL Server после завершения установки. У вас есть одна последняя задача, которую нужно выполнить, — уборка.

Предполагая, что вы не хотите оставлять файлы, которые вы ранее перенесли на сервер, удалите их с помощью команды PowerShell Remove-Item. Однако вы должны указать путь к папке, в которую был извлечен исходный файл, и исходному установщику. Вот как это сделать:

Remove-Item -Path "\SQLSRVc$SQLServerServicePacksSQL2016SP2.exe","\SQLSRVc$tempSQLSP" -Recurse -Force

Краткое содержание

Вы успешно удаленно установили пакет обновления SQL Server, используя только файл и сценарий PowerShell. Теперь, когда у вас есть навыки обновления SQL Server для одного сервера, вы можете легко распространить этот код на несколько серверов.

Чтобы развернуть пакет обновления на нескольких серверах, используйте конструкции PowerShell, такие как цикл foreach. Поместите код, который вы изучили в этой статье, в цикл foreach, чтобы быстро обработать один или сотню SQL-серверов одновременно!