Windows容器部署SQL Server失败,遇用户名密码错误及日志读取异常
Windows容器部署SQL Server遇0x52e错误及容器退出的解决办法
1. 用系统账户启动容器
默认容器用户权限不足,无法访问系统事件日志,直接指定系统账户运行:
docker run -d -p 1433:1433 --user "NT AUTHORITY\SYSTEM" -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=YourStrong!Passw0rd" mcr.microsoft.com/mssql/server:2019-latest-windows
如果用docker-compose,在配置里添加user: "NT AUTHORITY\\SYSTEM"字段。
2. 解除主机UAC远程限制
主机的UAC策略可能阻止容器内的权限调用,执行以下命令修改注册表后重启Docker服务:
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
3. 替换启动脚本跳过日志检查
原start.ps里的Get-EventLog调用是权限问题的触发点,自定义启动脚本直接启动SQL Server:
- 本地创建
start.ps1文件:
Start-Service MSSQLSERVER while ($true) { Start-Sleep 3600 }
- 挂载脚本到容器并指定运行:
docker run -d -p 1433:1433 -v C:\你的本地脚本路径\start.ps1:C:\sqlserver\start.ps1 -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=YourStrong!Passw0rd" mcr.microsoft.com/mssql/server:2019-latest-windows powershell C:\sqlserver\start.ps1
4. 重置Docker Windows容器环境
如果以上方法无效,重置Docker Desktop的Windows容器配置:打开Docker Desktop设置→故障排除→重置为默认值,同时确保内存分配至少4GB。
内容的提问来源于stack exchange,提问作者vivek
相关产品推荐
相关产品推荐

