Перейти к основному содержимому

Настройка Microsoft SQL Server

Плагин сообщества

Некоторая основная функциональность может быть ограничена. Если вы заинтересованы в участии, ознакомьтесь с исходным кодом для каждого из перечисленных ниже репозиториев.

  • Поддерживается: Community
  • Авторы: Mikael Ene & dbt-msft community (https://github.com/dbt-msft)
  • Репозиторий GitHub: dbt-msft/dbt-sqlserver
  • Пакет PyPI: dbt-sqlserver
  • Канал в Slack: #db-sqlserver
  • Поддерживаемая версия dbt Core: v0.14.0 и новее
  • Поддержка dbt: Not Supported
  • Минимальная версия платформы данных: SQL Server 2016

Установка dbt-sqlserver

Установите адаптер с помощью pip. До версии 1.8 установка адаптера автоматически устанавливала dbt-core и любые дополнительные зависимости. Начиная с 1.8 установка адаптера не устанавливает dbt-core автоматически. Это потому, что версии адаптеров и dbt Core были развязаны, и мы больше не хотим перезаписывать существующие установки dbt-core. Используйте следующую команду для установки:

python -m pip install dbt-core dbt-sqlserver

Настройка dbt-sqlserver

Конфигурацию, специфичную для SQL Server, см. на странице настроек SQL Server.

Изменение настроек по умолчанию в dbt-sqlserver v1.2 / ODBC Driver 18

Microsoft внесла несколько изменений, связанных с шифрованием соединений. Подробнее об изменениях читайте ниже.

Предварительные требования​

На Debian/Ubuntu убедитесь, что у вас есть заголовочные файлы ODBC перед установкой

sudo apt install unixodbc-dev

Скачайте и установите Microsoft ODBC Driver 18 для SQL Server. Если у вас уже установлен ODBC Driver 17, он также будет работать.

Поддерживаемые конфигурации​

  • Адаптер тестировался с SQL Server 2017, SQL Server 2019, SQL Server 2022 и Azure SQL Database.
  • Мы тестируем все комбинации с Microsoft ODBC Driver 17 и Microsoft ODBC Driver 18.
  • Колляции, на которых мы проводим тесты: SQL_Latin1_General_CP1_CI_AS и SQL_Latin1_General_CP1_CS_AS.

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

Методы аутентификации и конфигурация профиля​

Общая конфигурация​

Для всех методов аутентификации обратитесь к следующим параметрам конфигурации, которые можно задать в вашем файле profiles.yml. Полная справка по всем параметрам доступна в конце этой страницы.

Параметр конфигурацииОписаниеТипПример
driverODBC-драйвер для использованияОбязательныйODBC Driver 18 for SQL Server
serverИмя хоста сервераОбязательныйlocalhost
portПорт сервераОбязательный1433
databaseИмя базы данныхОбязательныйНе применимо
schemaИмя схемыОбязательныйdbo
retriesКоличество автоматических попыток повторить запрос перед ошибкой. По умолчанию 1. Запросы с синтаксическими ошибками не будут повторяться. Этот параметр можно использовать для преодоления временных сетевых проблем.НеобязательныйНе применимо
login_timeoutКоличество секунд, используемых для установления соединения перед ошибкой. По умолчанию 0, что означает, что тайм-аут отключен или используются системные настройки по умолчанию.НеобязательныйНе применимо
query_timeoutКоличество секунд, используемых для ожидания запроса перед ошибкой. По умолчанию 0, что означает, что тайм-аут отключен или используются системные настройки по умолчанию.НеобязательныйНе применимо
schema_authorizationОпционально укажите принципала, который должен владеть схемами, создаваемыми dbt. Подробнее о авторизации схем.НеобязательныйНе применимо
encryptШифровать ли соединение с сервером. По умолчанию true. Подробнее о шифровании соединений.НеобязательныйНе применимо
trust_certДоверять ли сертификату сервера. По умолчанию false. Подробнее о шифровании соединений.НеобязательныйНе применимо
Loading table...

Шифрование соединений​

Microsoft внесла несколько изменений в выпуске ODBC Driver 18, которые влияют на то, как настраивается шифрование соединений. Чтобы учесть эти изменения, начиная с dbt-sqlserver 1.2.0 или новее, значения по умолчанию для encrypt и trust_cert были изменены. Оба этих параметра теперь всегда будут включены в строку соединения с сервером, независимо от того, оставили ли вы их в конфигурации профиля или нет.

  • Значение по умолчанию для encrypt — true, что означает, что соединения по умолчанию шифруются.
  • Значение по умолчанию для trust_cert — false, что означает, что сертификат сервера будет проверен. Установив это значение в true, будет принят самоподписанный сертификат.

Более подробную информацию о том, как эти значения влияют на ваше соединение и как они используются в разных версиях ODBC-драйвера, можно найти в документации Microsoft.

Стандартная аутентификация SQL Server​

Учетные данные SQL Server поддерживаются как для локальных серверов, так и для Azure, и это метод аутентификации по умолчанию для dbt-sqlserver.

При работе в Windows вы также можете использовать свои учетные данные Windows для аутентификации.

profiles.yml
your_profile_name:
target: dev
outputs:
dev:
type: sqlserver
driver: 'ODBC Driver 18 for SQL Server' # (ODBC-драйвер, установленный в вашей системе)
server: hostname или IP вашего сервера
port: 1433
database: database
schema: schema_name
user: username
password: password

Аутентификация Microsoft Entra ID​

Хотя вы можете использовать аутентификацию с именем пользователя и паролем SQL, как указано выше, вы можете выбрать один из следующих методов аутентификации для Azure SQL.

Следующие дополнительные методы доступны для аутентификации в продуктах Azure SQL:

  • Имя пользователя и пароль Microsoft Entra ID (ранее Azure AD)
  • Сервисный принципал
  • Управляемая идентичность
  • Аутентификация на основе окружения
  • Аутентификация Azure CLI
  • Аутентификация VS Code (доступна через автоматический вариант ниже)
  • Аутентификация модуля Azure PowerShell (доступна через автоматический вариант ниже)
  • Автоматическая аутентификация

Настройка автоматической аутентификации в большинстве случаев является самым простым выбором и работает для всех вышеперечисленных методов.

Сначала установите Azure CLI, затем выполните вход:

az login

profiles.yml
your_profile_name:
target: dev
outputs:
dev:
type: sqlserver
driver: 'ODBC Driver 18 for SQL Server' # (ODBC-драйвер, установленный в вашей системе)
server: hostname или IP вашего сервера
port: 1433
database: exampledb
schema: schema_name
authentication: CLI

Дополнительные параметры для Microsoft Entra ID на Windows​

На системах Windows также доступны следующие дополнительные методы аутентификации для Azure SQL:

  • Интерактивная аутентификация Microsoft Entra ID
  • Интегрированная аутентификация Microsoft Entra ID
  • Аутентификация Visual Studio (доступна через автоматический вариант выше)

Эта настройка может опционально показывать запросы многофакторной аутентификации.

profiles.yml
your_profile_name:
target: dev
outputs:
dev:
type: sqlserver
driver: 'ODBC Driver 18 for SQL Server' # (ODBC-драйвер, установленный в вашей системе)
server: hostname или IP вашего сервера
port: 1433
database: exampledb
schema: schema_name
authentication: ActiveDirectoryInteractive
user: bill.gates@microsoft.com

Автоматическое предоставление принципалов Microsoft Entra ID для грантов​

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

Установив auto_provision_aad_principals в true в конфигурации вашей модели, вы можете автоматически предоставлять принципалов Microsoft Entra ID (пользователей или группы), которые еще не существуют.

В Azure SQL вы можете войти, используя аутентификацию Microsoft Entra ID, но чтобы иметь возможность предоставить принципалу Microsoft Entra ID определенные разрешения, он должен быть сначала связан в базе данных. (Документация Microsoft)

Обратите внимание, что принципалы не будут автоматически удаляться, когда они удаляются из блока grants.

Авторизация схем​

Вы можете опционально указать принципала, который должен владеть всеми схемами, создаваемыми dbt. Это затем используется в операторе CREATE SCHEMA следующим образом:

CREATE SCHEMA [schema_name] AUTHORIZATION [schema_authorization]

Распространенный случай использования — это использование, когда вы аутентифицируетесь с принципалом, у которого есть разрешения на основе группы, такой как группа Microsoft Entra ID. Когда этот принципал создает схему, сервер сначала попытается создать индивидуальный логин для этого принципала, а затем связать схему с этим принципалом. Если бы вы использовали Microsoft Entra ID в этом случае, то это не удалось бы, так как Azure SQL не может автоматически создавать логины для отдельных лиц, входящих в группу AD.

Справка по всем параметрам соединения​

Параметр конфигурацииОписаниеОбязательныйЗначение по умолчанию
driverODBC-драйвер для использования.✅
hostИмя хоста сервера базы данных.✅
portПорт сервера базы данных.1433
databaseИмя базы данных для подключения.✅
schemaСхема для использования.✅
authenticationМетод аутентификации для использования. Это не требуется для аутентификации Windows.'sql'
UIDИмя пользователя, используемое для аутентификации. Это можно не указывать в зависимости от метода аутентификации.
PWDПароль, используемый для аутентификации. Это можно не указывать в зависимости от метода аутентификации.
windows_loginУстановите это значение в true, чтобы использовать аутентификацию Windows. Это доступно только для SQL Server.
tenant_idИдентификатор арендатора экземпляра Microsoft Entra ID. Это используется только при подключении к Azure SQL с сервисным принципалом.
client_idИдентификатор клиента сервисного принципала Microsoft Entra. Это используется только при подключении к Azure SQL с сервисным принципалом Microsoft Entra.
client_secretСекрет клиента сервисного принципала Microsoft Entra. Это используется только при подключении к Azure SQL с сервисным принципалом Microsoft Entra.
encryptУстановите это значение в false, чтобы отключить использование шифрования. См. выше.true
trust_certУстановите это значение в true, чтобы доверять сертификату сервера. См. выше.false
retriesКоличество попыток повторить неудачное соединение.1
schema_authorizationОпционально укажите принципала, который должен владеть схемами, создаваемыми dbt. Подробнее выше.
login_timeoutКоличество секунд ожидания до получения ответа от сервера при установлении соединения. 0 означает, что тайм-аут отключен.0
query_timeoutКоличество секунд ожидания до получения ответа от сервера при выполнении запроса. 0 означает, что тайм-аут отключен.0
Loading table...

Допустимые значения для authentication:

  • sql: Аутентификация SQL с использованием имени пользователя и пароля
  • ActiveDirectoryPassword: Аутентификация Active Directory с использованием имени пользователя и пароля
  • ActiveDirectoryInteractive: Аутентификация Active Directory с использованием имени пользователя и запросов MFA
  • ActiveDirectoryIntegrated: Аутентификация Active Directory с использованием учетных данных текущего пользователя
  • ServicePrincipal: Аутентификация Microsoft Entra ID с использованием сервисного принципала
  • CLI: Аутентификация Microsoft Entra ID с использованием учетной записи, с которой вы вошли в Azure CLI
  • ActiveDirectoryMsi: Аутентификация Microsoft Entra ID с использованием управляемой идентичности, доступной в системе
  • environment: Аутентификация Microsoft Entra ID с использованием переменных окружения, как задокументировано здесь
  • auto: Аутентификация Microsoft Entra ID, пробующая предыдущие методы аутентификации, пока не найдет работающий

Нашли ошибку?

0
Loading