Spec-Zone.ru › Ansible

Модуль 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 / обязательный

Узел, на котором работает база данных.

Для именованных экземпляров используйте формат server\instance. В этом случае не используйте login_port.

login_password

string

Пароль для аутентификации.

login_port

integer

Порт сервера MSSQL. Также необходимо указать login_host.

Нельзя использовать вместе с именованным экземпляром в login_host (то есть в формате server\instance).

Если login_host не является именованным экземпляром и login_port не указано, по умолчанию используется 1433.

login_user

string

Имя пользователя для аутентификации.

name

псевдонимы: db

string

База данных, в которой будет выполнен скрипт.

По умолчанию: ""

output

string

При использовании default каждая строка возвращается в виде списка значений. См. query_results.

Формат вывода dict возвращает словарь, в котором имена столбцов используются в качестве ключей. См. query_results_dict.

Для dict необходимо, чтобы каждый запрос возвращал именованные столбцы; в противном случае возникает ошибка.

Варианты:

  • "dict"
  • "default" ← (по умолчанию)

params

dictionary

Параметры, передаваемые скрипту как параметры SQL. (Запрос 'SELECT %(name)s"' с помощью example: '{"name": "John Doe"}.)’.

script

string / обязательный

SQL-скрипт для выполнения.

Скрипт может содержать несколько SQL-инструкций. Пакеты можно разделять командой GO.

Каждый пакет должен возвращать как минимум один результирующий набор.

transaction

boolean

добавлено в community.general 8.4.0

Если запрошен транзакционный режим, начинается транзакция, и изменения фиксируются, только если скрипт выполнен успешно. В противном случае транзакция откатывается.

Если транзакционный режим не запрошен (по умолчанию), изменения фиксируются автоматически.

Варианты:

  • false ← (по умолчанию)
  • true

Атрибуты

Атрибут

Поддержка

Описание

check_mode

Поддержка: частичная

В режиме проверки скрипт не выполняется.

Может работать в режиме check_mode и возвращать прогноз изменения состояния, не изменяя целевой объект.

diff_mode

Поддержка: отсутствует

В режиме различий возвращает сведения об изменениях (или о возможных изменениях в check_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

Список пакетов (запросов, разделённых ключевым словом GO).

Возвращается: при успешном выполнении и output=default

Пример: [[[["Batch 0 - Select 0"]], [["Batch 0 - Select 1"]]], [[["Batch 1 - Select 0"]]]]

queries

list / элементы=list

Список результирующих наборов каждого запроса.

Если запрос не возвращает результатов, результаты этого и всех последующих запросов не включаются в вывод.

Для разделения запросов используйте ключевое слово GO в script.

Возвращается: при успешном выполнении

rows

list / элементы=list

Список строк, возвращённых запросом.

Возвращается: при успешном выполнении

column_value

list / элементы=string

Список значений столбцов.

Любой тип JSON, не являющийся стандартным, преобразуется в строку.

Возвращается: при успешном выполнении, если используется вывод по умолчанию

Пример: ["Batch 0 - Select 0"]

query_results_dict

list / элементы=list

Список пакетов (запросов, разделённых ключевым словом GO).

Возвращается: при успешном выполнении и output=dict

Пример: [[[["Batch 0 - Select 0"]], [["Batch 0 - Select 1"]]], [[["Batch 1 - Select 0"]]]]

queries

list / элементы=list

Список результирующих наборов каждого запроса.

Если запрос не возвращает результатов, результаты этого и всех последующих запросов не включаются в вывод. Для разделения запросов используйте ключевое слово GO.

Возвращается: при успешном выполнении

rows

list / элементы=list

Список строк, возвращённых запросом.

Возвращается: при успешном выполнении

column_dict

dictionary

Словарь имён и значений столбцов.

Любой тип JSON, не являющийся стандартным, преобразуется в строку.

Возвращается: при успешном выполнении, если вывод представлен в виде словаря

Пример: {"col_name": "Batch 0 - Select 0"}

Авторы

  • Kris Budde (@kbudde)

Ссылки на коллекцию

  • Отслеживание проблем
  • Репозиторий (исходный код)
  • Обратиться за помощью
  • Сообщить об ошибке
  • Предложить функцию
  • Связь

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API