You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Ansible 2.9对Azure SQL数据库运行SQL脚本?

针对Azure SQL数据库运行SQL脚本的Ansible 2.9 Playbook方案

前提条件

  • 执行Playbook的节点已安装sqlcmd工具:
    • Linux系统:通过微软官方源安装mssql-tools包
    • Windows系统:安装SQL Server命令行工具或通过Chocolatey安装mssql-cli
  • Azure SQL服务器已配置防火墙规则,允许执行节点的IP访问
  • 已获取Azure SQL连接信息:服务器全名(格式:xxx.database.windows.net)、数据库名、登录用户名、密码

Linux节点适用Playbook

- name: 执行Azure SQL数据库脚本
  hosts: localhost  # 替换为实际执行节点组
  gather_facts: false
  vars:
    azure_sql_server: "your-sql-server.database.windows.net"
    azure_sql_db: "target-db-name"
    sql_username: "sql-admin-user"
    sql_password: "sql-admin-password"  # 建议用Ansible Vault加密存储
    sql_script_path: "/local/path/to/your/script.sql"

  tasks:
    - name: 验证sqlcmd工具是否存在
      command: sqlcmd -?
      register: sqlcmd_check
      failed_when: sqlcmd_check.rc != 0

    - name: 运行SQL脚本
      command: >
        sqlcmd -S {{ azure_sql_server }} -d {{ azure_sql_db }}
        -U {{ sql_username }} -P {{ sql_password }}
        -i {{ sql_script_path }}
      register: exec_result

    - name: 输出脚本执行结果
      debug:
        var: exec_result.stdout_lines

Windows节点适用Playbook

- name: 在Windows节点执行Azure SQL脚本
  hosts: windows_nodes  # 替换为Windows节点组
  gather_facts: false
  vars:
    azure_sql_server: "your-sql-server.database.windows.net"
    azure_sql_db: "target-db-name"
    sql_username: "sql-admin-user"
    sql_password: "sql-admin-password"  # 建议用Ansible Vault加密存储
    sql_script_path: "C:\\local\\path\\to\\your\\script.sql"

  tasks:
    - name: 验证sqlcmd工具是否存在
      win_command: sqlcmd -?
      register: sqlcmd_check
      failed_when: sqlcmd_check.rc != 0

    - name: 运行SQL脚本
      win_command: >
        sqlcmd -S {{ azure_sql_server }} -d {{ azure_sql_db }}
        -U {{ sql_username }} -P {{ sql_password }}
        -i {{ sql_script_path }}
      register: exec_result

    - name: 输出脚本执行结果
      debug:
        var: exec_result.stdout_lines

关键注意事项

  • 密码硬编码存在安全风险,推荐使用ansible-vault加密密码变量,执行Playbook时加上--ask-vault-pass参数解密
  • 如果SQL脚本包含敏感操作,建议先在测试环境验证脚本逻辑
  • 若遇到连接超时,检查Azure SQL服务器的防火墙规则是否允许执行节点IP访问
  • Ansible 2.9的ms_sql模块对Azure SQL支持有限,官方推荐使用sqlcmd命令行工具完成跨环境的SQL脚本执行

内容的提问来源于stack exchange,提问作者ankita rani patro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 12:44:59