Perl 和 MS SQL 线程问题

Perl and MS SQL thread issue

我在 Windows 上有一个 Perl 应用程序,它使用 运行 并行的线程。每个线程访问一个 MSSQL 数据库。

我知道我不能使用 Win32::OLE 因为它不是线程安全的。

你能建议我一些其他合适的解决方案吗?

我不知道正确的方法是什么,也不知道有什么方法可以解决。

正如@Borodin 所建议的,为什么不使用 DBIx::Class

它是线程安全的。也许您应该更好地解释您的应用程序访问数据库的方式。您似乎有一个 "Windows server",它是一种使用 Win32::OLE 的 Perl 模块,并且该服务器实际上与数据库对话。

DBI 除了在安装过程中使用的通常构建和测试模块外,不依赖于任何其他东西

SQL服务器没有DBDdriver(我不清楚为什么。也许有人会启发我?)所以你需要使用ODBC连接使用DBD::ODBCdriver

我不确定 DBI 在线程下的表现如何,我建议您改用 fork,它是在 Windows 版本的 Perl 上模拟的。您将需要设置 $dbh->{AutoInactiveDestroy} = 1 以防止进程在 auto-destroying 数据库和语句句柄中不应该