sql - 跨进程的数据库连接池

标签 sql connection oledb pooling

我们有一个由多个 EXE 组成的客户端/服务器应用程序。数据访问层与我们的 EXE 模块共享的库中的客户端位于同一物理层。 ODBC 和 OleDB 连接池按进程进行管理;是否有跨进程共享数据库连接的技术(除了将数据访问层移至中间层之外)?

最佳答案

OLEDB 和 ODBC 中的数据库连接本质上是进程绑定(bind)的。在最低级别,sql server 数据库连接使用 IPC 机制,如命名管道、共享内存或 tcp 套接字。其他数据库可能专门使用网络连接。如果您考虑一下,要共享连接池和连接,您需要将这些低级对象(套接字、命名管道、共享内存部分)复制到另一个进程,然后允许它们管理它们。即使您可以将它们交给您,您也无法同时使用它们。

为了做你想做的事,你真的必须将数据访问层移动到所有多个 exe 都想要使用的共享空间中。这通常是一个中间层,然后每个 exe 将通过某种 IPC 机制(.net 远程处理、com 服务器、RPC、网络等)与其进行通信。

关于sql - 跨进程的数据库连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/365984/

相关文章:

c# - 用 C# 编写的托管 OleDB 提供程序

excel - Microsoft Access 数据库引擎找不到对象工作表 - ACE OLEDB

python - Django 不支持删除级联

php - mySQL 数据库查询 LIMIT 帮助...如果返回的行数超过 'x' 如何创建页面?

Linux : How to LIMIT incoming (concurrent) connection COUNT?

azure - MS Teams DevOps 连接 "you have no associated Azure DevOps organizations"

php - 如何在 where() 函数中给出条件以获得不等于表中的零记录

mysql - 数据库表结构

java - 连接USB跨平台硬件设备

sql-server - 用于处理多列中的 NULL 的 SSIS 表达式