解决Terraform在Azure MSSQL虚拟机自动执行数据库初始化脚本的问题
问题背景
基于MicrosoftSQLServer/sql2022-ws2022镜像创建Azure Windows虚拟机,已挂载包含现有SQL Server数据库的E盘。现有初始化脚本可完成数据库附加、SQL身份验证配置等任务,手动通过RDP登录运行脚本一切正常。
自动化执行遇到的问题
使用Terraform的azurerm_virtual_machine_extension执行该脚本时,非数据库操作(如PowerShell的Set-TimeZone修改时区)可正常运行,但数据库相关脚本以NT Local Authority身份执行,无法完成需要管理员权限的Invoke-SqlCommand操作。
尝试方案及障碍
尝试过多种切换执行身份的方案均失败:
- 最可行的方案是创建计划任务指定管理员用户运行脚本,但新创建的虚拟机上无法执行该操作;
- 仅当通过UI登录管理员账户,删除
azurerm_virtual_machine_extension资源后重新执行terraform apply,脚本才能正常运行,推测管理员账户需UI登录激活后才能用于身份切换。
当前备选方案是将脚本自动复制到虚拟机C盘后手动运行,但希望找到更优的完全自动化方案,可按需提供Terraform及PowerShell相关代码。
问题总结
- 虚拟机创建及基础配置正常
- 手动运行初始化脚本无异常
- 数据库脚本因执行身份权限不足无法完成验证
- 切换至指定用户的操作需先通过UI登录激活账户才能生效
内容的提问来源于stack exchange,提问作者Mark NZ
相关产品推荐
相关产品推荐

