SQL Express 2019静默安装后sa密码无法正常登录问题求助
问题分析与解决
你的问题根源在于SecureString类型的密码无法直接作为明文参数传递给SQL安装程序:
- 使用
Read-Host -AsSecureString获取的$pass是加密的SecureString对象,并非明文字符串 - 直接将
$pass传给setup.exe的/SAPWD参数时,PowerShell会把它转换为对象的类型标识(比如System.Security.SecureString),而非你实际输入的密码,导致SQL安装时设置的SA密码完全错误
解决方法
先把SecureString转换为明文字符串,再传递给安装程序,修改后的代码如下:
$pass = Read-Host "enter SQL sa password" -AsSecureString # 将SecureString转换为明文密码 $plainPass = [System.Net.NetworkCredential]::new("", $pass).Password # 执行SQL安装 .\setup.exe /SAPWD=$plainPass /ConfigurationFile=ConfigurationFile.ini
额外提示
- 转换后的明文密码只会短暂存于内存中,相比硬编码仍保留了一定安全性(不会明文存储在脚本或配置文件内)
- 检查你的
ConfigurationFile.ini,确保其中没有重复设置SAPWD参数,避免覆盖你传递的密码
内容的提问来源于stack exchange,提问作者Fitzgery
相关产品推荐
相关产品推荐

