Skip to content

Инджестор Microsoft SQL Server

Настройка, предварительные условия и разрешения

Для учетной записи, под которой инджестор будет обращаться в базу данных, необходим доступ к следующих схемам и таблицам в них:

INFORMATION_SCHEMA: SCHEMATA, TABLES, COLUMNS, TABLE_CONSTRAINTS, CONSTRAINT_COLUMN_USAGE, KEY_COLUMN_USAGE, REFERENTIAL_CONSTRAINTS, VIEWS, SEQUENCES

sys: computed_columns, identity_columns

tempdb.INFORMATION_SCHEMA: COLUMNS

Для выдачи необходимых прав достаточно выполнить следующую команду:

GRANT VIEW DEFINITION ON database::my_database TO my_user;

Доступ необходим для всех БД, чьи метаданные планируется извлекать.

Дополнительно, для извлечения привилегий пользователей инжестору необходимы гранты: IMPERSONATE ANY LOGIN на СУБД, для вызова HAS_PERMS_BY_NAME

ALTER ANY USER для всех БД, чьи метаданные планируется извлекать, для получения списка пользователей БД.

Возможности платформы (Important Capabilities)

Название Описание Поддерживается Настройки
Schema Metadata Вкладка Schema: схема датасета Да Включено по умолчанию.
Descriptions Вкладка Documentation: текстовое описание объекта Да Включено по умолчанию. Можно редактировать через Excel.
Data Lineage Вкладка Lineage: внутренний lineage источника Да Настраивается в рецепте.
Properties Вкладка Properties: системные поля Да Включено по умолчанию. Настраивается в рецепте с помощью трансформеров.
Dataset Usage & Query History Вкладка Queries: запросы и историческая информация о датасете. Да Включено по умолчанию.
Data Profiling (Профилирование данных) Вкладка Stats: количество строк, столбцов, статистики и графики Да Отключено по умолчанию. Настраивается в рецепте, в разделе profiling или при создании источника с помощью Form.
DQ Checks Вкладка DQ Checks: проверка качества данных Да Отключено по умолчанию. Настраивается с помощью дополнительного инджестора.
Platform Instance Наличие у объекта связи с платформ инстансом Да Включено по умолчанию. Настраивается в рецепте.
Critical data Чекбокс Critical полей Да Включено по умолчанию. Можно редактировать через Excel.
Ownership Наличие у объекта владельца Да Включено по умолчанию. Можно редактировать через Excel или с помощью трансформеров.
Detect deleted entities Проверка удалены ли данные в источнике. Да Отключено по умолчанию. Настраивается в рецепте, в разделе stateful ingestion.
Status Пометить удаленным Да Включено по умолчанию. Можно редактировать с помощью трансформеров.
Tags Наличие у объекта тега Да Включено по умолчанию. Можно редактировать через Excel и с помощью трансформеров.
Glossary Term Наличие у объекта связи с термином Да Включено по умолчанию. Можно редактировать через Excel или с помощью трансформеров.
Domains (Домены) Наличие у объекта связи с доменом Да Настраивается в рецепте, в разделе stateful ingestion. Можно редактировать через Excel или с помощью трансформеров.

Пример рецепта MS SQL

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

source:
  type: mssql
  config:
    host_port: localhost:1433  # Хост и порт сервера БД
    username: user             # Пользователь
    password: pass             # Пароль
    database: my_database      # ОПЦИОНАЛЬНО: имя базы данных. Если не указывать данный параметр (убрать данную строку) будут загружены метаданные всех БД на источнике.
    platform_instance: 'Сюда_подставить_platform_instance'
    stateful_ingestion:
      enabled: true            # Признак включения режима 'Stateful ingesting' - загружаемые данные имеют приоритет над загруженными ранее. Если в загружаемых отсутствуют таблицы/поля - они не будут отображаться в Каталоге
    database_pattern:          # Необязательный параметр. Regex паттерны для разрешения/исключения баз, по умолчанию allow: ['.*'], deny: [], ignoreCase: True
      allow: ['.*']            # Подробности заполнения данного блока смотрите на странице Паттерны (раздел Установка инджесторов) 
      deny: ['']
      ignoreCase: True
    schema_pattern:            # Необязательный параметр. Regex паттерны для разрешения/исключения схем, по умолчанию allow: ['.*'], deny: ['information_schema'], ignoreCase: True
      allow: ['.*']            # Подробности заполнения данного блока смотрите на странице Паттерны (раздел Установка инджесторов) 
      deny: ['information_schema']
      ignoreCase: True
    table_pattern:             # Необязательный параметр. Regex паттерны для разрешения/исключения таблиц, по умолчанию allow: ['.*'], deny: [], ignoreCase: True. Формат - база.схема.паттерн_таблицы, например, для извлечения таблиц из базы customers, начинающихся с mobile_ - customers.public.mobile_*
      allow: ['.*']            # Подробности заполнения данного блока смотрите на странице Паттерны (раздел Установка инджесторов) 
      deny: []
      ignoreCase: True
    view_pattern:              # Необязательный параметр. Regex паттерны для разрешения/исключения представлений, по умолчанию allow: ['.*'], deny: [], ignoreCase: True
      allow: ['.*']            # Подробности заполнения данного блока смотрите на странице Паттерны (раздел Установка инджесторов) 
      deny: []
      ignoreCase: True
    # Опционально: конфигурация SSL для подключения к источнику
    # options:
    #   connect_args:
    #     cafile: server-ca.pem
    #     validate_host: true

pipeline_name: 'Сюда_подставить_имя_pipeline'
sink:
  type: catalog-rest
  config:
    server: 'https://demo-gms.datacatalog.mts.ru'
    token: '********'
transformers:
  - type: 'add_digital_products'
    config:
      digital_products: ['PRODUCT_ID1','PRODUCT_ID2']    # Список продуктов из мастер-системы, с которыми будут связаны все объекты, создаваемые по результатам инджестинга.

Пример рецепта MS SQL ODBC

source:
  type: mssql-odbc
  config:
    host_port: localhost:1433  # Хост и порт сервера БД
    username: user             # Пользователь
    password: pass             # Пароль
    database: my_database      # Имя БД. Вместо database следует указать параметр initial_database (Имя БД, к которой у пользователя есть доступ), если необходимо извлекать данные обо всех БД на источнике
    platform_instance: 'Сюда_подставить_platform_instance'
    stateful_ingestion:
      enabled: true            # Признак включения режима 'Stateful ingesting' - загружаемые данные имеют приоритет над загруженными ранее. Если в загружаемых отсутствуют таблицы/поля - они не будут отображаться в Каталоге
    database_pattern:          # Необязательный параметр. Regex паттерны для разрешения/исключения баз, по умолчанию allow: ['.*'], deny: [], ignoreCase: True
      allow: ['.*']            # Подробности заполнения данного блока смотрите на странице Паттерны (раздел Установка инджесторов) 
      deny: ['']
      ignoreCase: True
    schema_pattern:            # Необязательный параметр. Regex паттерны для разрешения/исключения схем, по умолчанию allow: ['.*'], deny: ['information_schema'], ignoreCase: True
      allow: ['.*']            # Подробности заполнения данного блока смотрите на странице Паттерны (раздел Установка инджесторов) 
      deny: ['information_schema']
      ignoreCase: True
    table_pattern:             # Необязательный параметр. Regex паттерны для разрешения/исключения таблиц, по умолчанию allow: ['.*'], deny: [], ignoreCase: True. Формат - база.схема.паттерн_таблицы, например, для извлечения таблиц из базы customers, начинающихся с mobile_ - customers.public.mobile_*
      allow: ['.*']            # Подробности заполнения данного блока смотрите на странице Паттерны (раздел Установка инджесторов) 
      deny: []
      ignoreCase: True
    view_pattern:              # Необязательный параметр. Regex паттерны для разрешения/исключения представлений, по умолчанию allow: ['.*'], deny: [], ignoreCase: True
      allow: ['.*']            # Подробности заполнения данного блока смотрите на странице Паттерны (раздел Установка инджесторов) 
      deny: []
      ignoreCase: True
    # Опционально: конфигурация SSL для подключения к источнику
    # options:
    #   connect_args:
    #     cafile: server-ca.pem
    #     validate_host: true

    # For ODBC only
    use_odbc: 'True'
    uri_args:
      driver: 'ODBC Driver 17 for SQL Server'
      Encrypt: "yes"
      TrustServerCertificate: "Yes"
      ssl: "True"
pipeline_name: 'Сюда_подставить_имя_pipeline'
sink:
  type: catalog-rest
  config:
    server: 'https://demo-gms.datacatalog.mts.ru'
    token: '********'
transformers:
  - type: 'add_digital_products'
    config:
      digital_products: ['PRODUCT_ID1','PRODUCT_ID2']    # Список продуктов из мастер-системы, с которыми будут связаны все объекты, создаваемые по результатам инджестинга.

Пример рецепта для подключения MS SQL с использованием Kerberos

Перед запуском необходимо выполнить kinit в системе:

kinit <ваша техническая учетная запись>@MSK.MTS.RU -kt ~/<ваша техническая учетная запись>.keytab
pipeline_name: "mssql-pn"
source:
    type: mssql
    config:
        database: db_test
        host_port: 'localhost:1433'
        username: <ваша техническая учетная запись>
        platform_instance: 'mssql-pi'
        include_jobs: False
        include_stored_procedures: False
        include_stored_procedures_code: False
        options:
            connect_args:
                use_sso: True
        stateful_ingestion:
            enabled: true
sink:
    type: catalog-rest
    config:
        server: 'https://gms.datacatalog.ru'
        token: '********'

Создание keytab-файла

Для запуска kinit внутри контейнера нужно смонтировать krb5.conf & keytab, например:

docker run --rm -v /etc/krb5.conf:/etc/krb5.conf -v $(pwd)/mssql_2_datahub.yml:/mssql_2_datahub.yml -v $(pwd)/<ваша техническая учетная запись>.keytab:/<ваша техническая учетная запись>.keytab -it --name mssql_ingestor --entrypoint="/bin/bash" sregistry.mts.ru/datacatalog/metadata-ingestion:stable -c 'kinit  <ваша техническая учетная запись>@MSK.MTS.RU -kt /<ваша техническая учетная запись>.keytab && catalog ingest run -c /mssql_2_datahub.yml'