У меня есть приложение Perl в Windows, которое использует потоки, которые работают параллельно. Каждый поток обращается к базе данных MSSQL.Проблема с потоком Perl и MS SQL
Я понимаю, что не могу использовать Win32::OLE
, потому что он не является потокобезопасным.
Не могли бы вы предложить мне еще одно подходящее решение для этого?
Создать службу Windows, которая будет обращаться к базе данных как к одному потоку, и Perl будет использовать эту услугу?
Создать еще один сервер приложений Perl, который будет иметь доступ к БД в качестве приложения с одним потоком, а потоки Perl будут использовать эту услугу?
Использовать библиотеку
Win32::OLE
(DBI) только в дочерних потоках или каким-либо безопасным способом?
Я не знаю, каков правильный путь, и какими могут быть способы его решения.
Прошу прощения, если я тускнею, но что делает DBI с Win32 :: OLE? Я не вижу проблем с предоставлением многопоточного доступа к базе данных с использованием [DBI] (https://metacpan.org/pod/DBI) – Borodin
Я думал, что Perl DBI-библиотека использует в моем случае библиотеку Win32 :: OLE и, следовательно, не сохраняет подключитесь к базе данных с помощью $ con = DBI-> connect ("dbi: ADO: ...). – stepan
Вам необходимо использовать соединение ODBC с помощью [DBD :: ODBC] (https://metacpan.org/pod/ DBD :: ODBC), но [DBI] (https://metacpan.org/pod/DBI) не зависит от каких-либо модулей, кроме некоторых требований времени сборки и драйверов DBD. – Borodin