community.general.mssql_script 模块 – 在 MSSQL 数据库上执行 SQL 脚本
注意
此模块是 community.general 集合 (版本 10.1.0) 的一部分。
如果您正在使用 ansible
包,则可能已安装此集合。它不包含在 ansible-core
中。要检查它是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install community.general
。您需要其他要求才能使用此模块,有关详细信息,请参阅 要求。
要在 playbook 中使用它,请指定:community.general.mssql_script
。
community.general 4.0.0 中的新增功能
概要
在 MSSQL 数据库上执行 SQL 脚本。
要求
以下要求是在执行此模块的主机上所需的。
pymssql
参数
参数 |
注释 |
---|---|
运行数据库的主机。 |
|
用于身份验证的密码。 |
|
MSSQL 服务器的端口。也需要定义 默认值: |
|
用于身份验证的用户名。 |
|
要运行脚本的数据库。 默认值: |
|
使用 输出格式
选项
|
|
作为 SQL 参数传递给脚本的参数。(查询 |
|
要执行的 SQL 脚本。 脚本可以包含多个 SQL 语句。多个批次可以用 每个批次必须返回至少一个结果集。 |
|
如果请求事务模式,则启动事务,并且只有在脚本成功时才提交更改。否则,回滚事务。 如果不请求事务模式(默认),则自动提交更改。 选项
|
属性
属性 |
支持 |
描述 |
---|---|---|
支持:部分 在检查模式下不会执行脚本。 |
可以在 |
|
支持:不支持 |
在差异模式下,将返回有关已更改内容(或可能需要在 |
备注
注意
在远程主机上需要 pymssql Python 包。对于 Ubuntu,这很容易,只需
pip install pymssql
(参见 ansible.builtin.pip。)
示例
- name: Check DB connection
community.general.mssql_script:
login_user: "{{ mssql_login_user }}"
login_password: "{{ mssql_login_password }}"
login_host: "{{ mssql_host }}"
login_port: "{{ mssql_port }}"
db: master
script: "SELECT 1"
- name: Query with parameter
community.general.mssql_script:
login_user: "{{ mssql_login_user }}"
login_password: "{{ mssql_login_password }}"
login_host: "{{ mssql_host }}"
login_port: "{{ mssql_port }}"
script: |
SELECT name, state_desc FROM sys.databases WHERE name = %(dbname)s
params:
dbname: msdb
register: result_params
- assert:
that:
- result_params.query_results[0][0][0][0] == 'msdb'
- result_params.query_results[0][0][0][1] == 'ONLINE'
- name: Query within a transaction
community.general.mssql_script:
login_user: "{{ mssql_login_user }}"
login_password: "{{ mssql_login_password }}"
login_host: "{{ mssql_host }}"
login_port: "{{ mssql_port }}"
script: |
UPDATE sys.SomeTable SET desc = 'some_table_desc' WHERE name = %(dbname)s
UPDATE sys.AnotherTable SET desc = 'another_table_desc' WHERE name = %(dbname)s
transaction: true
params:
dbname: msdb
- name: two batches with default output
community.general.mssql_script:
login_user: "{{ mssql_login_user }}"
login_password: "{{ mssql_login_password }}"
login_host: "{{ mssql_host }}"
login_port: "{{ mssql_port }}"
script: |
SELECT 'Batch 0 - Select 0'
SELECT 'Batch 0 - Select 1'
GO
SELECT 'Batch 1 - Select 0'
register: result_batches
- assert:
that:
- result_batches.query_results | length == 2 # two batch results
- result_batches.query_results[0] | length == 2 # two selects in first batch
- result_batches.query_results[0][0] | length == 1 # one row in first select
- result_batches.query_results[0][0][0] | length == 1 # one column in first row
- result_batches.query_results[0][0][0][0] == 'Batch 0 - Select 0' # each row contains a list of values.
- name: two batches with dict output
community.general.mssql_script:
login_user: "{{ mssql_login_user }}"
login_password: "{{ mssql_login_password }}"
login_host: "{{ mssql_host }}"
login_port: "{{ mssql_port }}"
output: dict
script: |
SELECT 'Batch 0 - Select 0' as b0s0
SELECT 'Batch 0 - Select 1' as b0s1
GO
SELECT 'Batch 1 - Select 0' as b1s0
register: result_batches_dict
- assert:
that:
- result_batches_dict.query_results_dict | length == 2 # two batch results
- result_batches_dict.query_results_dict[0] | length == 2 # two selects in first batch
- result_batches_dict.query_results_dict[0][0] | length == 1 # one row in first select
- result_batches_dict.query_results_dict[0][0][0]['b0s0'] == 'Batch 0 - Select 0' # column 'b0s0' of first row
返回值
常见的返回值已在此处记录 此处,以下是此模块特有的字段
键 |
描述 |
---|---|
批次列表(用 返回:成功和 示例: |
|
查询返回的行列表。 返回:成功 |
|
列值列表。 任何非标准 JSON 类型都将转换为字符串。 返回:如果输出为默认值,则返回成功 示例: |
|
批次列表(用 返回:成功且 示例: |
|
每个查询的结果集列表。 如果某个查询没有返回结果,则此查询及之后所有查询的结果将不会包含在输出中。使用 ‘GO’ 关键字分隔查询。 返回:成功 |
|
查询返回的行列表。 返回:成功 |
|
列名和值的字典。 任何非标准 JSON 类型都将转换为字符串。 返回:如果输出为字典,则返回成功 示例: |