如何通过Ansible为SQL Server添加具有sysadmin角色的登录账户?
Ansible为SQL Server添加sysadmin角色登录账户的实现方案
Ansible官方原生数据库模块暂未直接提供对应功能,可通过以下两种成熟的变通方案实现:
方案1:通过PowerShell/sqlcmd执行原生SQL语句
该方案不需要额外安装第三方Ansible模块,兼容性最高。
Windows环境部署的SQL Server示例
使用ansible.windows.win_powershell模块执行SQL命令:
- name: 创建SQL Server登录账户并授予sysadmin角色 ansible.windows.win_powershell: script: | $sqlQuery = @" CREATE LOGIN [你的登录名] WITH PASSWORD = N'你的强密码', CHECK_POLICY = OFF; ALTER SERVER ROLE sysadmin ADD MEMBER [你的登录名]; "@ Invoke-SqlCmd -ServerInstance "你的SQL实例名" -Query $sqlQuery -Username "已有sysadmin权限的账户" -Password "对应密码"
Linux环境部署的SQL Server示例
使用ansible.builtin.shell调用sqlcmd执行命令:
- name: 创建SQL Server登录账户并授予sysadmin角色 ansible.builtin.shell: | /opt/mssql-tools/bin/sqlcmd -S localhost -U 已有sysadmin权限的账户 -P 对应密码 -Q "CREATE LOGIN [你的登录名] WITH PASSWORD = N'你的强密码', CHECK_POLICY = OFF; ALTER SERVER ROLE sysadmin ADD MEMBER [你的登录名];"
方案2:使用社区MSSQL脚本模块
如果已经安装了community.general集合,可直接使用community.general.mssql_script模块执行SQL,写法更简洁:
- name: 创建SQL Server登录账户并授予sysadmin角色 community.general.mssql_script: login_user: 已有sysadmin权限的账户 login_password: 对应密码 server_instance: 你的SQL实例地址 script: | CREATE LOGIN [你的登录名] WITH PASSWORD = N'你的强密码', CHECK_POLICY = OFF; ALTER SERVER ROLE sysadmin ADD MEMBER [你的登录名];
注意事项
- 执行上述任务的Ansible操作账户需具备对应SQL Server的sysadmin权限才能完成角色授予操作
- 生产环境建议开启
CHECK_POLICY参数适配密码策略,密码需符合SQL Server的复杂度要求
内容的提问来源于stack exchange,提问作者Kelvin A. Vasquez
相关产品推荐
相关产品推荐

