Настройка 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 Cloud: Not Supported
- Минимальная версия платформы данных: SQL Server 2016
Установка dbt-sqlserver
Используйте pip
для установки адаптера. До версии 1.8 установка адаптера автоматически устанавливала dbt-core
и любые дополнительные зависимости. Начиная с версии 1.8, установка адаптера не устанавливает автоматически dbt-core
. Это связано с тем, что адаптеры и версии dbt Core были разделены, и мы больше не хотим перезаписывать существующие установки dbt-core.
Используйте следующую команду для установки:
Конфигурация dbt-sqlserver
Для конфигурации, специфичной для SQL Server, пожалуйста, обратитесь к конфигурациям SQL Server.
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
.
Полная справка по всем параметрам доступна в конце этой страницы.
Параметр конфигурации | Описание | Тип | Пример |
---|---|---|---|
driver | ODBC-драйвер для использования | Обязательный | 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 . Подробнее о шифровании соединений. | Необязательный | Не применимо |
Шифрование соединений
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 для аутентификации.
- Учетные данные SQL Server
- Учетные данные Windows
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
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
windows_login: True
Аутентификация Microsoft Entra ID
Хотя вы можете использовать аутентификацию с именем пользователя и паролем SQL, как указано выше, вы можете выбрать один из следующих методов аутентификации для Azure SQL.
Следующие дополнительные методы доступны для аутентификации в продуктах Azure SQL:
- Имя пользователя и пароль Microsoft Entra ID (ранее Azure AD)
- Сервисный принципал
- Управляемая идентичность
- Аутентификация на основе окружения
- Аутентификация Azure CLI
- Аутентификация VS Code (доступна через автоматический вариант ниже)
- Аутентификация модуля Azure PowerShell (доступна через автоматический вариант ниже)
- Автоматическая аутентификация
Настройка автоматической аутентификации в большинстве случаев является самым простым выбором и работает для всех вышеперечисленных методов.
- Имя пользователя и пароль Microsoft Entra ID
- Сервисный принципал
- Управляемая идентичность
- На основе окружения
- Azure CLI
- Автоматическая
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: ActiveDirectoryPassword
user: bill.gates@microsoft.com
password: iheartopensource
Идентификатор клиента часто также называют идентификатором приложения.
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: ServicePrincipal
tenant_id: 00000000-0000-0000-0000-000000001234
client_id: 00000000-0000-0000-0000-000000001234
client_secret: S3cret!
Будут работать как системно назначенные, так и назначенные пользователем управляемые иденти чности.
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: ActiveDirectoryMsi
Этот вариант аутентификации позволяет динамически выбирать метод аутентификации в зависимости от доступных переменных окружения.
Документация Microsoft по EnvironmentCredential объясняет доступные комбинации переменных окружения, которые вы можете использовать.
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: environment
Сначала установите Azure CLI, затем выполните вход:
az login
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
Этот вариант аутентификации автоматически попытается использовать все доступные методы аутентификации.
Следующие методы пробуются по порядку:
- Аутентификация на основе окружения
- Аутентификация с управляемой идентичностью
- Аутентификация Visual Studio (только для Windows, игнорируется на других операционных системах)
- Аутентификация Visual Studio Code
- Аутентификация Azure CLI
- Аутентификация модуля Azure PowerShell
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: auto
Дополнительные параметры для Microsoft Entra ID на Windows
На системах Windows также доступны следующие дополнительные методы аутентификации для Azure SQL:
- Интерактивная аутентификация Microsoft Entra ID
- Интегрированная аутентификация Microsoft Entra ID
- Аутентификация Visual Studio (доступна через автоматический вариант выше)
- Интерактивная аутентификация Microsoft Entra ID
- Интегрированная аутентификация Microsoft Entra ID
Эта настройка может опционально показывать запросы многофакторной аутентификации.
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