Поставщики баз данных для работы с системой Дельта¶
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