Sql server 在Docker容器中的服务器核心2019上安装SQL Server LocalDB

Sql server 在Docker容器中的服务器核心2019上安装SQL Server LocalDB,sql-server,localdb,windows-server-2019,redgate,windows-server-container,Sql Server,Localdb,Windows Server 2019,Redgate,Windows Server Container,在Docker容器(image=mcr.microsoft.com/windows/servercore:ltsc2019)中,我下载了SQL Server Express 2019安装程序 我已成功下载LocalDB msi,其中包含: SQL2019-SSEI-Expr.exe /Action=Download /MediaType=LocalDB /Quiet 该文件下载到: C:\Users\ContainerAdministrator\Downloads\en-us\SqlLocal

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

我已成功下载LocalDB msi,其中包含:

SQL2019-SSEI-Expr.exe /Action=Download /MediaType=LocalDB /Quiet
该文件下载到:

C:\Users\ContainerAdministrator\Downloads\en-us\SqlLocalDB.msi
然而。。。运行
msiexec
失败,没有任何错误消息。导航到上述路径后,我执行:

msiexec.exe /qb /i .\SqlLocalDB.msi IAcceptSqlLocalDBLicenseTerms=YES
命令在零延迟后立即返回到命令行。没有安装任何东西

我错过了什么

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

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

msiexec.exe /qn /a SqlLocalDB.msi IAcceptSqlServerLicenseTerms=YES /L*V "C:\installers\SQL\install.log"
然而,不幸的是,在导航到
C:\Program Files\Microsoft SQL Server\150\tools\binn
并运行
SqlLocalDB.exe info
时,我得到了以下信息:

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

SQL LoalDB需要VisualC++重新分发表,否则很多事情都不会正确(我的问题是SQLSWrror服务根本不会在安装期间创建)。 编辑:看来我可以用Chocolate安装vc_redist和旧版本的localdb。(申请将sqllocaldb包更新到2019年)这样对大多数人来说会简化事情。将原始参数/命令保留在下面,以防万一

精确参数的My powershell步骤(假设您收集所需文件):

  • 启动进程。\VC_redist.x64.exe-Wait-ArgumentList@('/install','/norestart','/passive')
    注意我使用的是
    https://aka.ms/vs/16/release/vc_redist.x64.exe
    应该是2019年的版本,但大量评论说我应该使用SQL安装程序包中的版本,或者是2015年的版本。然而,这两种方法在容器中都不适用于我,但这可能是我错误地调用了它们。除此之外,我还需要安装更多的软件包
  • start process msiexec-Wait-ArgumentList@('/i'、'SqlLocalDB.msi'、'/qn'、'/norestart'、'/L*V'、'install.log'、'iacceptsqlllocaldblicensite RMS=YES')
    。这是从命令源中找到的

  • 获取一些事件日志的有用powershell代码片段(将“系统”更改为“应用程序”以供其他人使用),这有助于我解决问题,因为容器中没有事件查看器:
    get eventlog-LogName System-After(get Date)。AddMinutes(-5)|?{-not$Source.Contains(“DCOM”)}|?{-not$Message.Contains(“取决于后台任务基础设施服务”)}|格式列表
    这一点以及从SqlLocalDB.msi逐行检查“install.log”最终使我走上了正确的道路。

    服务器核心不支持吗?我对此感到奇怪,但我在网上找到了一些参考资料,人们在那里描述我正试图做的事情。我只是试着在没有安装任何其他东西的情况下绘制ltsc2019的清晰图像——仍然没有乐趣。但是,为什么要使用服务器核心的LocalDb?基于服务的SQL Express更适合。这将是一个Azure管道构建代理,我们对Redgate的“SqlChangeAutomation”powershell工具有一个严格的要求——它使用LocalDBRelated:注意,我离在容器中运行任何东西还有几天的时间,但您可能还需要启动SqlWriter服务LocalDB安装(我们在没有redist的情况下启动失败)作为容器入口点的一部分,就像。你太棒了!我不得不暂时备份这个项目,因为我没有更多的时间来投入。在尝试了你的建议后,我成功地重建了图像,通过了一系列测试,它的性能完美无瑕。谢谢!!