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

标签 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\SqlLocalDB.msi

但是...正在运行msiexec失败且没有任何错误消息。导航到上述路径后,我执行:

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

该命令在零延迟后立即返回命令行。没有安装任何东西。

我错过了什么?

编辑: 我正在尝试使用 LocalDB,因为这最终将成为 Azure Pipelines 构建代理。我们使用 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 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. start-process msiexec -Wait -ArgumentList @('/i','SqlLocalDB.msi','/qn','/norestart','/L*V','install.log','IACCEPTSQLLOCALDBLICENSETE RMS=YES')请注意,“/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这以及从 SqlLocalDB.msi 逐行检查“install.log”最终使我走上了正确的道路。

关于sql-server - 在 Docker 容器中的 Server Core 2019 上安装 SQL Server LocalDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65096743/

相关文章:

c# - 我无法在未安装 SqlServer Express 的计算机上建立 Sql Server localdb 连接

asp.net-mvc - 如何在 Windows Server 2019 上运行的 ASP.NET MVC 应用程序中启用 TLS 1.0 和 TLS 1.1?

c# - 将.net应用程序移动到新服务器时出现SQL Server连接错误

SQL 每个月的第一天

sql-server - 将仅订阅从 SSRS 2008 移动到 SSRS 2012

sql server计算不同年份每月的累计数

sql-server - Visual Studio 2015 调试器 - 对 SqlCommand 的高性能影响

c# - 在 Integrated Security = False 的客户端机器上用 SQL LocalDB 替换 SQL Compact

c# - 部署 ASP.NET MVC + LocalDB 应用程序时出现问题

.net - EventLog.SourceExists 在 Windows Server 2019 上失败