记一次Sqlserver数据库存储过程调用导致的连接池耗尽事件

背景:

有两台数据库服务器IP分别为A和B。

(1)A服务器上有一个存储过程名称Proc_A,B服务器上有一个存储过程名称Proc_B, A服务器上有B服务器上远程数据库链接,B服务器上也有A服务器上远程数据库链接。

(2)在A服务器上面判断业务数据,如果是条件1,则走A服务器的自己的逻辑(Proc_A),如果是条件2,则在A服务器上远程调用B服务器上的逻辑(Proc_B)。

(3)在B服务器上面判断业务数据,如果是条件2,则走B服务器的自己的逻辑(Proc_B),如果是条件1,则在B服务器上远程调用A服务器上的逻辑(Proc_A),A服务器和B服务器的数据是物理隔离的。

(4)A服务器和B服务器的数据是物理隔离的。

发生过程:

在A服务器上调用B服务器上的逻辑,正常不在A上就在B上,因为设备故障导致了传入了非法的业务数据,导致判断既不是A服务器的逻辑,也不是B服务器上的逻辑,在A服务器上远程调用B,B服务器上又在调用A服务器的逻辑,默认产生了循环。

故障现象:

数据库通过客户端无法正常登录,提示链接通道占满

解决办法:

在A服务器和B服务器上只相互调用1次,阻断循环。

总结:

跨服务器互相调用数据,一定要注意是否会形成循环。

相关推荐
June`11 小时前
多线程redis下如何解决aof重写和rdb持久化的数据一致性问题
数据库·redis·缓存
二宝哥11 小时前
离线安装maven
java·数据库·maven
SZLSDH11 小时前
场景适配论 | 数字孪生IOC建设中渲染技术与智能体能力的协同逻辑
前端·数据库·ai·数字孪生·数据可视化·智能体
这个DBA有点耶11 小时前
SQL改写实战:子查询、CTE、窗口函数性能对比
数据库·mysql·性能优化
@我漫长的孤独流浪11 小时前
数据库完整性约束全解析:从理论到实践
数据库
l1t12 小时前
DeepSeek总结的 DuckDB 1.5.3:并非普通的补丁版本
数据库·duckdb
云商直通车12 小时前
华为云ECS购买与配置超详细教程
服务器·数据库·华为云
hj104312 小时前
fastadmin对接人大金仓 kingbase问题记录&解决
数据库
罗超驿12 小时前
19.告别复杂SQL!用MySQL视图把逻辑拆成“变量”式操作
数据库·mysql·面试
技术钱12 小时前
向量数据库的介绍
数据库