Модуль community.general.mssql_script — выполнение SQL-скриптов в базе данных MSSQL
Примечание
Этот модуль входит в коллекцию community.general (версия 12.6.1).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install community.general. Для использования этого модуля требуются дополнительные компоненты; подробности см. в разделе Требования.
Чтобы использовать модуль в сценарии, укажите: community.general.mssql_script.
Добавлено в community.general 4.0.0
Краткое описание
- Выполняет SQL-скрипты в базе данных MSSQL.
Требования
Следующие компоненты должны быть установлены на узле, на котором выполняется этот модуль.
- pymssql
Параметры
Параметр | Комментарии |
|---|---|
login_host string / обязательный | Узел, на котором работает база данных. Для именованных экземпляров используйте формат |
login_password string | Пароль для аутентификации. |
login_port integer | Порт сервера MSSQL. Также необходимо указать Нельзя использовать вместе с именованным экземпляром в Если |
login_user string | Имя пользователя для аутентификации. |
name псевдонимы: db string | База данных, в которой будет выполнен скрипт. По умолчанию: |
output string | При использовании Формат вывода Для Варианты:
|
params dictionary | Параметры, передаваемые скрипту как параметры SQL. (Запрос |
script string / обязательный | SQL-скрипт для выполнения. Скрипт может содержать несколько SQL-инструкций. Пакеты можно разделять командой Каждый пакет должен возвращать как минимум один результирующий набор. |
transaction boolean добавлено в community.general 8.4.0 | Если запрошен транзакционный режим, начинается транзакция, и изменения фиксируются, только если скрипт выполнен успешно. В противном случае транзакция откатывается. Если транзакционный режим не запрошен (по умолчанию), изменения фиксируются автоматически. Варианты:
|
Атрибуты
Атрибут | Поддержка | Описание |
|---|---|---|
check_mode | Поддержка: частичная В режиме проверки скрипт не выполняется. | Может работать в режиме |
diff_mode | Поддержка: отсутствует | В режиме различий возвращает сведения об изменениях (или о возможных изменениях в |
Примечания
Примечание
- На удалённом узле требуется пакет Python pymssql. Для 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
Возвращаемые значения
Общие возвращаемые значения описаны здесь; ниже перечислены поля, уникальные для этого модуля:
Ключ | Описание |
|---|---|
query_results list / элементы=list | Список пакетов (запросов, разделённых ключевым словом Возвращается: при успешном выполнении и Пример: |
|
queries list / элементы=list |
Список результирующих наборов каждого запроса. Если запрос не возвращает результатов, результаты этого и всех последующих запросов не включаются в вывод. Для разделения запросов используйте ключевое слово Возвращается: при успешном выполнении |
|
rows list / элементы=list |
Список строк, возвращённых запросом. Возвращается: при успешном выполнении |
|
column_value list / элементы=string |
Список значений столбцов. Любой тип JSON, не являющийся стандартным, преобразуется в строку. Возвращается: при успешном выполнении, если используется вывод по умолчанию Пример: |
query_results_dict list / элементы=list | Список пакетов (запросов, разделённых ключевым словом Возвращается: при успешном выполнении и Пример: |
|
queries list / элементы=list |
Список результирующих наборов каждого запроса. Если запрос не возвращает результатов, результаты этого и всех последующих запросов не включаются в вывод. Для разделения запросов используйте ключевое слово Возвращается: при успешном выполнении |
|
rows list / элементы=list |
Список строк, возвращённых запросом. Возвращается: при успешном выполнении |
|
column_dict dictionary |
Словарь имён и значений столбцов. Любой тип JSON, не являющийся стандартным, преобразуется в строку. Возвращается: при успешном выполнении, если вывод представлен в виде словаря Пример: |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/community/general/mssql_script_module.html