Repo auto make wiki page - ☆Wiki Sandbox - НТЦ 'Комплексные Системы'

Поставщики баз данных для работы с системой Дельта

Microsoft SQL Server

Для работы системы Дельта может быть использована СУБД SQL Server версий от 2008 R2 и старше, включая SQL Server Express и LocalDb.

Модули, использующие COM API ("Библиотеки системы Дельта"), и модули системы версии V2, работающие с БД напрямую без COM API, для подключения требуют OLEDB-провайдер для SQL Server.
В большинство версий Windows встроен провайдер SQLOLEDB. Но для более эффективной работы лучше использовать наиболее современную версию OLEDB-провайдера, поставляемого в составе клиентских библиотек SQL Server. Версии провайдеров:

  • SQLOLEDB
    Провайдер Microsoft OLE DB Provider for SQL Server из комплекта Windows Data Access Components. Входит в состав большинства версий ОС Windows. Является устаревшим и не рекомендуется к использованию.
  • SQLNCLI, SQLNCLI10, SQLNCLI11
    Провайдеры SQL Server Native Client для SQL Server версий от 2005 до 2017.
  • MSOLEDBSQL
    Провайдер Microsoft OLE DB Driver for SQL Server для SQL Server 2018.

Наличие провайдера в системе можно проверить поиском в реестре ProgID провайдера. Например, для SQLOLEDB в реестре будет зарегистрирован ProgID

HKEY_CLASSES_ROOT\SQLOLEDB

Модули на .NET Framework используют провайдер, встроенный в .NET (класс SqlConnection). Этот провайдер не зависит от OLEDB-провайдеров. Этот вариант подключения к БД на SQL Server является предпочтительным.

Строки подключения SQL Server через OLEDB

Для COM API и модулей Дельта V2 нужно использовать этот вариант.

В атрибуте Provider обязательно указывается ProgID OLEDB-провайдера.
Для Windows-аутентификации указывается Integrated Security=SSPI, для аутентификации парой логин/пароль указываются атрибуты User ID и Password.
Многие атрибуты имеют псевдонимы (например, Initial Catalog и Database).

Например:

Provider=SQLOLEDB; Datasource=192.168.0.140; Initial Catalog=TEST; Integrated Security=SSPI
Provider=SQLOLEDB; Datasource=192.168.0.140; Initial Catalog=TEST; User ID=username; Password=userpass
Provider=SQLNCLI11; Server=(LocalDB)\v11.0; AttachDbFileName=c:\Users\admin\TEST.mdf; Integrated Security=SSPI

Строки подключения SQL Server для модулей на .NET Framework

Атрибут Provider не указывается. В остальном синтаксис аналогичен OLEDB.

Например:

Datasource=192.168.0.140; Initial Catalog=TEST; Integrated Security=SSPI
Datasource=192.168.0.140; Initial Catalog=TEST; User ID=username; Password=userpass

Строки подключения SQL Server в обобщенном формате системы Дельта

Многие модули системы Дельта в настройках поддерживают строки подключения в обобщенном формате, где кроме пар ключ-значения для собственно БД-провайдера можно указать тип провайдера и некоторые другие настройки. Тип провайдера указывается в атрибуте Dbms. В атрибуте PreserveAuth=true можно задать признак сохранения параметров аутентификации, указанных в строке подключения, чтобы модуль не заменял их на параметры, выбранные пользователем.

  • Подключение через .NET-провайдер SqlConnection:
    Dbms=MSSql; Server=192.168.0.140; Database=TEST; User ID=user; Password=pass; PreserveAuth=true
  • Подключение через SQLOLEDB:
    Dbms=OleDbMSSql; Initial Catalog=TEST; Integrated Security=SSPI
  • Подключение через OLEDB с указанием провайдера:
    Dbms=OleDb; Provider=SQLNCLI; Initial Catalog=TEST; Integrated Security=SSPI
  • Подключение через OLEDB с автоопределением провайдера:
    Dbms=OleDbMSSqlAuto; Initial Catalog=TEST; Integrated Security=SSPI
  • Подключение через OLEDB с форсированным автоопределением провайдера:
    Dbms=OleDbMSSqlForceAuto; Provider=UNUSED; Initial Catalog=TEST; Integrated Security=SSPI

В случае с OleDbMSSqlForceAuto даже если ProgID OLEDB-провайдера указано в строке соединения, то будет выполнен поиск наиболее нового установленного OLEDB-провайдера, и использоваться для подключения будет именно он. В случае с OleDbMSSqlAuto автоматический поиск выполняется только если атрибут Provider не задан.

PostgreSQL

Модули, использующие COM API ("Библиотеки системы Дельта"), и модули системы версии V2 используют для подключения к PostgreSQL связку провайдеров ODBC и OLEDB. Эти модули разработаны для применения технологии OLEDB, но PostgreSQL не предоставляет официального OLEDB-провайдера, имеется только ODBC. Далее для взаимодействия с ODBC-провайдером используется OLEDB-провайдер для ODBC. В итоге требуется два провайдера:
  • psqlODBC
    PostgreSQL ODBC driver - официальный ODBC-провайдер для PostgreSQL. При установке на 64-битной версии провайдера необходимо отдельно установить 32-битную версию (версия x64 не содержит версию x86).
  • MSDASQL
    Microsoft OLE DB provider for ODBC - OLEDB-провайдер для ODBC для ОС Windows.

Некоторые модули могут подключаться к PostgreSQL через ODBC напрямую без использования OLEDB-провайдера (например D8 SqlClient).
Использование MSDASQL в .NET-приложениях не возможно.

Модули системы на .NET используют для подключения используют кроссплатформенную библиотеку npgsql - ADO.NET Data Provider for PostgreSQL (широко известный проект с исходным кодом). Провайдер существует для .NET Framework и .NET Core. Версия для .NET Framework совместима с .NET 4.5 и выше, но может быть использована и с .NET 4.0, если вместе с npgsql дополнительно поставлять некоторые модули из .NET 4.5.

Строки подключения PostgreSQL через ODBC

Например:

Driver={PostgreSQL UNICODE};Server=127.0.0.1;Port=5432;Database=PTEST;UID=postgres;Pwd=password

Строки подключения PostgreSQL через связку OLEDB-ODBC

Для COM API и модулей Дельта V2 нужно использовать этот вариант.

Например:

Host=127.0.0.1; Port=5432; Database=TEST; Username=postgres; Password=password

Строки подключения PostgreSQL через npgsql

Чтобы использовать провайдер npgsql, нужно в папку с .NET-приложением скопировать:
  • Npgsql.dll

и, для случая с .NET 4.0, еще нужно скопировать сборки из .NET 4.5:

  • System.Memory.dll
  • System.Runtime.CompilerServices.Unsafe.dll
  • System.Threading.Tasks.Extensions.dll

Устанавливать провайдер не обязательно.

Пример строки подключения:

Host=127.0.0.1; Port=5432; Database=TEST; Username=postgres; Password=password

Строки подключения PostgreSQL в обобщенном формате системы Дельта

  • Подключение через .NET-провайдер npgsql:
    Dbms=PostgreSQL; Server=127.0.0.1; Port=5432; Database=TEST; User ID=postgres; Password=password
    Dbms=PostgreSQL; Server=127.0.0.1; Port=5432; Database=TEST; Integrated Security=true
    Dbms=DbmsEnginePostgreSQL,DbProviderTypeDotNet,DbProviderNameNpgqsl; Server=127.0.0.1; Port=5432; Database=TEST; Username=postgres; Password=password; PreserveAuth=true
  • Подключение через ODBC-провайдер:
    Dbms=Odbc; Driver={PostgreSQL UNICODE}; Server=127.0.0.1; Port=5432; Database=TEST; UID=postgres; Pwd=password