MS SQL Server error: Communication link failure?????

dwy 2000-08-11 12:21:00
诸位仁兄:
小弟在VC下编写有关MS SQL Server的程序,使用 CDatabase和 CRecord类,但数据库连接打开时间很长后,用CRecordset::open()的时候就会抛出异常,错误信息是“Communication link failure”;并且数据库中的tempdb的空间大小随程序运行时间的增加,也在逐渐减小。
但只要把我的程序重启(即重新建立数据库连接),则一切正常且tempdb的大小也恢复到分配给它的空间的水平。随着运行时间的增加,将还会出现以上错误,tempdb的大小也逐渐减小。
我把部分代码附在下面,若我的表诉不够清楚,可来信与我联系dwyzy@21cn.com.
many thanks.

####################################################################
DWORD WINAPI ThrdAlrmDisp(LPVOID lpPara)
{
CDatabase db;
BOOL bRtn;
// open atmdb.
try {
bRtn = db.OpenEx(_T("DSN=ipdb;DATABASE=atmdb;UID=sa;PWD=dbserver"), CDatabase::noOdbcDialog);
} catch (CDBException *pEx) {
pEx->Delete();
bRtn = FALSE;
}
if (!bRtn) {
alrm_disp_log("fail to connect to atmdb.\n");
WSACleanup();
ExitProcess(1);
}

。。。
analyse_alrm_rec(CDatabase& db, char *rec);
//[注]:ipdb是odbc数据源的名称;
//[注]:atmdb是数据库的名称;
}

void analyse_alrm_rec(CDatabase& db, char *rec)
{

char SQL[2048];

.....
构造SQL语句。。。
db.BeginTrans();
try {
db.ExecuteSQL(SQL);
} catch (CDBException *pEx) {
printf("fail to update correlated alarm, SQL:\n%s\n%s\n\n", SQL, pEx->m_strError);
pEx->Delete();
db.Rollback();
return;
}
db.CommitTrans();
return;
}

/*很简单的一段程序,我省略了一些细节,ThrdAlrmDisp(LPVOID lpPara)是一线程的入口。*/

again thanks.
...全文
386 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wingsun 2000-08-11
  • 打赏
  • 举报
回复
根据错误提示判断,是因为你长时间没有访问数据库,导致和服务器的连接断掉了。为了防止这种情况,你应该在程序空闲是利用一些没有的指令来保持与数据库的连接,或者发生错误时,关掉连接然后重新连接。
本课程根据讲师十多年在世界500强外企的生产环境中的SQL Serer数据库管理和项目实施经验倾心打造。课程系统性强,知识体系完整,覆盖90%以上的企业环境下SQL Server高可用场景,课程中不仅演示详细的操作步骤,更加突出最常见的故障和问题,让学员少走“弯路”,不只是让学员学会“操作”更能让学员“操作”的规范,满满的干货分享,一些课程资料(架构图、部署规划表格等)不仅可以帮助学员掌握技能,也可以作为学员在企业生产环境中实施SQL Server高可用的配置文档、操作手册等。课程的实验环境介绍:1)全部基于微软域环境和企业版SQL Server AOAG - 95%以上的企业环境都是在域环境中,不介绍非域环境和标准版的SQL Server高可用性组,这的配置在企业中较罕见,没有实践意义,不浪费学员时间。2)相应域环境已提前部署和配置好 - 学员导入虚拟机即可开始实验,无需从零开始搭建域环境,所有实验中SQL Server均已加域,直入主题,节省大量时间。3)最新的Windows Server故障转移集群(WS2016、WS2019)和最新版本的SQL ServerSQL2017、SQL2019) -  WS2016-SQL2017与WS2019-SQL2019是目前大多数企业SQL Server高可用的主要平台,基于微软产品生命周期现在一些企业也在讲早期的AOAG向这两个版本迁移,掌握这两种组合不仅让学员学会,更能学有所用。本课程为后续SQL Server进阶课程铺垫,是通向SQL Server DBA 专家的必经之路,讲师每周答疑两次。所有课程资料包括:课程PPT、架构图、部署规划表格、各类脚本学员均可下载。     

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧