在Docker容器中的Server Core 2019上安装SQL Server LocalDB



在Docker容器(image=mcr.microsoft.com/windows/servercore:ltsc2019(中,我下载了SQL Server Express 2019安装程序。

我已成功下载LocalDB msi与:

SQL2019-SSEI-Expr.exe /Action=Download /MediaType=LocalDB /Quiet

文件下载到:

C:UsersContainerAdministratorDownloadsen-usSqlLocalDB.msi

然而。。。运行CCD_ 2失败,没有任何错误消息。导航到上述路径后,我执行:

msiexec.exe /qb /i .SqlLocalDB.msi IAcceptSqlLocalDBLicenseTerms=YES

命令在零延迟后立即返回到命令行。从未安装任何内容。

我错过了什么?

编辑:我正在尝试使用LocalDB,因为它最终将成为Azure Pipelines构建代理。我们使用Redgate的";SqlChangeAutomation";使用LocalDB的powershell工具。

编辑2:不确定这是否是进度,但是。。。我在msiexec日志记录方面花了一点时间,发现我可以用/a标志而不是/i来运行它,并使它成功安装。

msiexec.exe /qn /a SqlLocalDB.msi IAcceptSqlServerLicenseTerms=YES /L*V "C:installersSQLinstall.log"

然而,不幸的是,当导航到C:Program FilesMicrosoft SQL Server150toolsbinn并运行SqlLocalDB.exe info时,我得到的是:

Call to LocalDBFormatMessage failed. Error code returned:
2311389462.
Error in LocalDBFormatMessage! Error code returned:
2311389462.

SQL LocalDB需要Visual C++可再发行文件,否则很多事情都不会正常进行(我的问题是SqlWriter服务在安装过程中根本不会创建(。

编辑:我似乎可以使用chocolatey来安装vc_redist和旧版本的localdb。(要求将sqllocaldb包更新到2019年的申请单(,这样对大多数人来说会简化事情。将原始参数/命令保留在下面以防万一。

我的powershell精确参数步骤(假设你收集了所需的文件(:

  1. start-process .VC_redist.x64.exe -Wait -ArgumentList @('/install','/norestart','/passive')注意,我使用的是https://aka.ms/vs/16/release/vc_redist.x64.exe中的redist,应该是2019版本,但大量评论说我应该使用SQL安装程序包中的版本,或者2015版本。然而,这些";工作";对于容器中的我来说,但那可能是我错误地调用了它们。除此之外,我需要安装的更多软件包无论如何都需要2019年
  2. CCD_ 9注意/i〃;而不是"/a";在这一点上正确地工作/norestart";选项这是从choco localdb命令源中找到的

有用的powershell片段可以获得一些事件日志(将"系统"更改为"应用程序"(,这些日志帮助我解决问题,因为容器中没有事件查看器:get-eventlog -LogName System -After (Get-Date).AddMinutes(-5) | ? {-not $_.Source.Contains("DCOM") } |?{-not $_.Message.Contains("depends on the Background Tasks Infrastructure Service")}| Format-List这并检查;install.log";SqlLocalDB.msi中的一行一行最终让我走上了正轨。

我也试图为管道创建图像,通过chocolatey安装,所以我也简单地为可再分发文件安装了chocolately包,这解决了问题:

choco install vcredist-all -y
choco install sqllocaldb -y

最新更新