有没有一种很酷的方法可以在数百台机器上为 SQL Server 执行 CU 更新?

Rus*_*sen 19 sql-server installation automation

我的公司在一夜之间从 50 个 SQL Server 增长到 200 多个。帮助!

我的问题是:

  • 我怎样才能在这么多服务器上执行 CU 更新并且仍然有生命并保持理智?SCCM 似乎无法执行 CU 更新。

  • 有没有其他人能够在 100 台服务器上执行 CU 更新?

  • 还有哪些其他选择?

小智 15

cool way是使用无人值守安装脚本,该脚本仅从每台服务器调用,其中用于安装的媒体位于网络的中央目录中,可从每台服务器访问。您必须在提升模式下运行脚本,这在 PowerShell 中相当容易。

您将需要使用 CLI 来提取修补程序,我在这里找到了. 然后可以在此处找到SQL Server 补丁的 CLI 选项。

以下命令是我用来将 CU6 补丁应用到笔记本电脑上的本地 SQL Server 2012 SP2 实例的命令。我切换到我将修补程序下载到的目录:

.\SQLServer2012-KB3052468-x64.exe /X:E:\Software\SQL_Server\2012\SP2_CU6\Extracted
cd Extracted
.\setup.exe /action=patch /instancename=SQL12 /quiet /IAcceptSQLServerLicenseTerms
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

在此处输入图片说明

您几乎只需将其编写为每个服务器的脚本,然后将摘要日志(或整个日志)的这一部分拉入中心位置,以便您可以返回并确定状态。选项 2 将只包含几行代码来连接到每个实例并验证内部版本号。


Kin*_*hah 9

无人值守安装是要走的路 - 正如@ShawnMelton 提到的。要在 100 台服务器上部署 CU,您可以探索以下选项(测试它们,以便您知道哪些对您和您的环境有用):

  1. Sysinternals -PsExec将允许您在远程机器上生成安装。

  2. PowerShell - 使用 PowerShell 3.0 及更高版本中的远程处理功能来执行安装。例如Enter-PSSession -ComputerName <COMPUTERNAME>

  3. 老是金 - 使用.bat文件。 <== 这绝对适用于 SCCM,因为您可以.bat使用 SCCM将文件部署到多个服务器。

    以下是安装示例SQL2008_SP2_and_CU_2k8_64bit (根据您的需要进行修改)您可以将 bat 文件提供给 SCCM,以便它可以进行批量安装。

    REM starting SQL SP2 cu install.
    "C:\temp\SQL2008_SP2_and_CU_2k8_64bit\CU\SQLServer2008-KB2467239-x64.exe" /allinstances /quiet
    REM SQL SP2 cu install complete
    
    REM optional   STEP to reboot your machine 
    REM Reboot the host before kicking off the install
    shutdown.exe /r /f /c "DBA scheduled reboot" /t 30
    
    Run Code Online (Sandbox Code Playgroud)

作为旁注(注意!):

我永远不会一次性对这么多服务器(100 台)进行这种大规模更新。而是将它们按可管理的组进行批处理,然后按组修补它们。

通过这种方式,您可以轻松确定是否出现问题 - 例如,如果您正在安装的 CU 中存在错误,并且在以后的 CU 或 SP 中已修复。或者在安装方面也是如此,如果您一次性修补 100 台服务器,其中 5 或 7 台服务器没有得到正确修补,您将如何解决?

我在我的公司管理着 300 多台服务器,我更喜欢每周小批量地修补它们。所以你从少量开始,一旦你获得信心,你就会重复同样的事情。

编辑:

现在 dbatoolsUpdate-DbaInstance.ps1可以在本地和远程服务器上执行 SQL Server 服务包和累积更新的安装。