清幽傲竹实现的kbmMWServer数据库联接失败重联(转载红鱼儿)

1。修改kbmMWUnidac单元的TkbmMWUNIDACConnection.InternalOpenConnection方法,加上:

//支持unidac重联
         
FDatabase.Options.LocalFailover:=Options.LocalFailover;
         
FDatabase.OnConnectionLost:=OnConnectionLost;
         
FDatabase.AfterConnect:=AfterConnect;

2.处理UniConnection组件:

设置Options.LocalFailover:=True;

编码OnConnectionLost及AfterConnect事件:

procedure TFServerDM.UniMysqlConnectionConnectionLost(Sender:
TObject;
  Component: TComponent; ConnLostCause:
TConnLostCause;
  var RetryMode: TRetryMode);
begin
  if (Sender as TUniConnection).Tag < 1
then
  begin
    RetryMode :=
rmReconnectExecute;
    (Sender as
TUniConnection).Tag := (Sender as TUniConnection).Tag + 1;
  end
  else
  begin
    RetryMode :=
rmRaise;
    (Sender as
TUniConnection).Tag := 0;
  end;
end;

procedure TFServerDM.UniMysqlConnectionAfterConnect(Sender: TObject);

begin
 
(sender as TUniConnection).Tag := 0;

end;

感谢清幽傲竹!用这方法,就不怕数据库与AppServer的异常断开了!

我没有遇到这个问题,可能的原因是生产环境好,用的还是MSSQL,联接没有异常断开过,竹子用的是MYSQL。

时间: 2024-10-10 13:54:50

清幽傲竹实现的kbmMWServer数据库联接失败重联(转载红鱼儿)的相关文章

清幽傲竹实现kbmMWServer的方法(转)

感谢竹子! 整体思路,是不用kbmMWUNIDACQuery,而是直接用uniQuery做数据查询,利用kbmMWUNIDACConnectioPool取得数据库联接,自己再建一个uniQuery对象池,从中取uniQuery.下面是一个具体查询数据库的方法:function TSchoolSrv.PerformGetStuAttendanceState(  ClientIdent: TkbmMWClientIdentity;  const Args: array of Variant): Va

SQL Server 2014 无法打开用户默认数据库 登录失败错误4064的解决方法

SQL Server 2014 无法打开用户默认数据库 登录失败错误4064的解决方法 晚上干了件蠢事,删除了管理员账户的默认数据库,紧接着就出现了标题里面的报错. 解决办法如下: 第一步:打开命令控制台 Win+R打开运行,输入CMD 第二步:复制粘贴如下命令 sqlcmd -E -d"master" -Q"exec sp_defaultdb N'PC\Admin', N'master'" 注意:把上条命令PC\Admin改成自己实际的账户,使用BackSlash

SQL Server数据库附加失败:错误5120和错误950

再次敲机房,想参考以前的物理模型,结果在附加数据库这一环节出现了点问题,下面总结一下. 1.附加数据库失败,错误5120 对于这种错误,我在网上搜集了一下,主要有以下几种解决办法: 方法一:将要附加的文件拷贝到SQL Server默认的Data目录,即C:\ProgramFiles\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA,此时附加就会成功. 方法二:在登陆验证时,选择"Windows身份验证",而不是"SQL S

Oracle 数据库 JOB 失败后的重试规律解密

由于官方文档上没有找到相关的说明,所以这里进行了如下测试,为了找到oracle数据库中 job 失败后重试时间的规律. 数据库版本:11.2.0.3 测试说明:这里创建了一个日志表以及一个运行时必定出错的procedure,用于job的运行.这里只要记录下每次job执行时视图user_jobs 中的 next_date就可以推断出job 执行失败后的重试规律. 为了测试job的重试规律我做了如下工作 日志表以及序列: create table job_exec_logs (id number ,

db_recovery_file_dest_size 满导致数据库启动失败

启动数据库时: [email protected]>startup ORACLE instance started. Total System Global Area 417546240 bytes Fixed Size 2213936 bytes Variable Size 327157712 bytes Database Buffers 83886080 bytes Redo Buffers 4288512 bytes Database mounted. ORA-03113: end-of-

SPFILE导致数据库启动失败

服务器断电重启后,报数据库服务无法启动,在服务器上使用AS SYSDBA 登录后连接到空实例, 使用startup启动时报'ORA-24324: 未初始化服务句柄,ORA-01041: 内部错误, hostdef 扩展名不存在'错误. 分步启动startup nomount ,依然报以上错误,判断为spfile文件损坏造成.但本机没有使用pfile备份过spfile,而修改spfile要启动修改. 解决办法,手工创建pfile 文件INITSID.ORA,打开alert日志,找到数据库启动信息,

数据库附加失败 错误5172

今天分享一个很常见的错误,数据库附加失败,错误5172 误操作把SQL 的数据库删除了.(没有做备份) 使用硬盘数据恢复工具软件从硬盘找回了数据文档HTaiData_log.MDF和HTaiData_log.LDF文档并且恢复. 将数据文档HTaiData_log.MDF和HTaiData_log.LDF复制到C: 在企业管理器里附加数据库,选择HTaiData_log.LDF出现错误提示如下: 服务器:消息 5172 文件‘C:\HTaiData_log.LDF的文件头不是有效的数据库文件头 

在asp.net中使用加密数据库联接字符串

在我们发布网站时,加密web.config,这样可以有效保证数据库用户和密码安全,其步骤如下: 1.添加密钥 执行:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pc "hnlaw" -exp 其中"hnlaw"为密钥名称 2.添加web.config节点 在web.config的<configuration></configuration>之间添加: <con

mysql数据库启动失败

1.原因公司服务器故障,非正常停机导致数据库启动失败.报错信息[[email protected] dmp]# /etc/init.d/mysqld startStarting MySQL. ERROR! The server quit without updating PID file (/opt/mysql/data/15-144.pid). 2.查看mysql 日志180625 16:08:17 mysqld_safe Starting mysqld daemon with databas