SQL Server 2019非交互式安装失败:NT Service\SQLTELEMETRY账户错误
解决SQL Server 2019非交互式安装遥测账户报错问题
问题根源
交互式安装时,SQL Server安装程序会自动根据实例名生成对应的虚拟服务账户(如NT Service\SQLTELEMETRY$MSSQLSERVER1);但非交互式安装若配置文件参数错误、或运行权限不足,会导致无法识别/创建该虚拟账户。
具体解决步骤
1. 修正配置文件中的遥测服务账户参数
打开交互式生成的配置文件,找到以下两行:
SQLTELSVCACCOUNT="NT Service\SQLTELEMETRY" SQLTELSVCPASSWORD=""
如果你的实例是命名实例(如MSSQLSERVER1),需将SQLTELSVCACCOUNT修改为对应实例的虚拟账户:
SQLTELSVCACCOUNT="NT Service\SQLTELEMETRY$MSSQLSERVER1"
如果是默认实例(MSSQLSERVER),保持NT Service\SQLTELEMETRY即可。
2. 确保安装程序以本地系统权限运行
非交互式安装(包括Ansible win_package)必须拥有创建虚拟账户的权限,因此需要以**本地系统账户(Local System)**执行:
- 直接运行命令行时,使用
psexec -s E:\setup.exe /ConfigurationFile=xxxxx(需PsExec工具) - 在Ansible playbook中配置:
- name: Install SQL Server 2019 win_package: path: 'E:\setup.exe' arguments: '/ConfigurationFile=D:\sql_install_config.ini' state: present become: yes become_method: runas become_user: SYSTEM
3. 备选方案:改用内置系统账户替代虚拟账户
若虚拟账户问题仍无法解决,可在配置文件中将遥测服务账户改为本地系统账户,避免虚拟账户创建问题:
SQLTELSVCACCOUNT="NT AUTHORITY\SYSTEM" SQLTELSVCPASSWORD=""
该账户拥有足够权限运行遥测服务,且无需额外创建虚拟账户。
4. 验证配置文件的实例名一致性
确保配置文件中的INSTANCENAME参数与服务账户后缀完全匹配:
INSTANCENAME="MSSQLSERVER1"
实例名需和服务账户中的$MSSQLSERVER1部分一致,否则会出现账户不匹配报错。
内容的提问来源于stack exchange,提问作者tdl56
相关产品推荐
相关产品推荐

