Spec-Zone.ru › Ansible

Модуль community.general.mssql_script – Выполнение скриптов SQL в базе данных MSSQL

Примечание

Этот модуль является частью коллекции community.general (версия 9.5.0).

Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.

Для установки используйте: ansible-galaxy collection install community.general. Для использования этого модуля требуются дополнительные компоненты, см. Требования для получения подробной информации.

Для использования в playbook, укажите: community.general.mssql_script.

Новое в community.general 4.0.0

  • Краткое описание
  • Требования
  • Параметры
  • Атрибуты
  • Примечания
  • Примеры
  • Возвращаемые значения

Краткое описание

  • Выполнение скриптов SQL в базе данных MSSQL.

Требования

Ниже указаны требования, необходимые на хосте, который выполняет этот модуль.

  • pymssql

Параметры

Параметр

Комментарии

login_host

строка / обязательно

Хост, на котором работает база данных.

login_password

строка

Пароль, используемый для аутентификации.

login_port

целое число

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

Значение по умолчанию: 1433

login_user

строка

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

name

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

строка

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

Значение по умолчанию: ""

output

строка

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

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

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

Варианты:

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

params

словарь

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

script

строка / обязательно

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

Скрипт может содержать несколько операторов SQL. Несколько пакетов могут быть разделены командой GO.

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

transaction

логическое

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

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

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

Варианты:

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

Атрибуты

Атрибут

Поддержка

Описание

check_mode

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

Скрипт не будет выполнен в режиме проверки.

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

diff_mode

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

В режиме diff будет возвращать подробную информацию о том, что изменилось (или, возможно, нуждается в изменении в 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

список / элементы=список

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

Возвращается: успех и output=default

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

queries

список / элементы=список

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

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

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

Возвращается: успех

rows

список / элементы=список

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

Возвращается: успех

column_value

список / элементы=строка

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

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

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

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

query_results_dict

список / элементы=список

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

Возвращается: успех и output=dict

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

queries

список / элементы=список

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

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

Возвращается: успех

rows

список / элементы=список

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

Возвращается: успех

column_dict

словарь

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

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

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

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

Авторы

  • Kris Budde (@kbudde)

Ссылки на сборку

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

© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/general/mssql_script_module.html

Spec-Zone.ru

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