ADO访问SQL2000的问题

ejetcs 2002-04-22 08:40:27
我用ADO方法访问SQL2000,有时在程序启动连接数据库会提示“超时已过期”的错误,或者程序运行过程中数据库连接会莫名其妙的断开,有时用查询分析器也无法连接数据库,请教有谁知道原因吗?
...全文
53 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuty2006 2002-04-30
  • 打赏
  • 举报
回复
up
knightsj 2002-04-30
  • 打赏
  • 举报
回复
你用DSN连接试试,我一直用没遇到什么问题。(要在ODBC里配置一下,我觉得DSN灵活性很好)
ejetcs 2002-04-30
  • 打赏
  • 举报
回复
killcat能不能告诉我详细一点的地址
killcat 2002-04-29
  • 打赏
  • 举报
回复
到www.myvc.net 或www.easthot.net去看看,有你要的答案
Reve 2002-04-29
  • 打赏
  • 举报
回复
m_pConn1->ConnectionTimeout = 1200;
1200是不是毫秒呢?随便问一下。
sunherl 2002-04-29
  • 打赏
  • 举报
回复
m_pConn1->ConnectionTimeout = 1200;
ejetcs 2002-04-28
  • 打赏
  • 举报
回复
怎么,没人知道吗?
ejetcs 2002-04-25
  • 打赏
  • 举报
回复
if(szServer.GetLength() == 0) //如果未指定主服务器名,则从注册表中获取
{
szServer = GetSQLServerName(UTSQL_PRIMARY_SVR);
if(szServer.GetLength() == 0)
return -1;
}

CString datasource = _T("Provider=SQLOLEDB;SERVER=");
datasource += szServer + _T(";DATABASE=") + szDb + _T(";UID=") + szUser + _T(";PWD=") + szPassword;

try
{
m_pConn1.CreateInstance(__uuidof(Connection));
m_pConn1->ConnectionTimeout = 12;
m_pConn1->Mode = adModeReadWrite;
// m_pConn1->Attributes = adXactCommitRetaining | adXactAbortRetaining; //不要自动开始事务,以方便函数内确定回滚距离
// m_pConn1->BeginTrans();
m_pConn1->Open(_bstr_t(datasource), "", "", -1);
}
catch (_com_error &e)
{
if (m_pConn1 != NULL) m_pConn1.Release();
m_szErrorDescription.Format("%s", (char*)e.Description());
m_bIsDb1Open = FALSE;
return -1;
}

try
{
m_pCommand1.CreateInstance(__uuidof(Command));
m_pCommand1->ActiveConnection = m_pConn1;
m_pCommand1->CommandTimeout = 1000;

m_pRS1.CreateInstance(__uuidof(Recordset));
}
catch (_com_error &e)
{
if(m_pCommand1 != NULL) m_pCommand1.Release();
if(m_pRS1 != NULL) m_pRS1.Release();
m_szErrorDescription.Format("%s", (char*)e.Description());
m_bIsDb1Open = FALSE;
return -2;
}

m_bIsDb1Open = TRUE;

return 0;
zxs218 2002-04-25
  • 打赏
  • 举报
回复
我看是你的程序设计有问题,把那部分代码贴出来吧?这样好解决问题。
ejetcs 2002-04-24
  • 打赏
  • 举报
回复
100M网12秒的超时还短吗?另外我忘了告诉大家一个现象:Debug版本代码如果不设断点按F5执行,在某些节点上会经常出现前面我提到的现象,即使当时超时已设为20秒;如果在连接数据库执行前设置一个断点,然后再执行,该错误就不会发生,还请高手们多指教。
elc 2002-04-23
  • 打赏
  • 举报
回复
那可能是 连接时间的问题
你可以 设长一点 试一下
ejetcs 2002-04-23
  • 打赏
  • 举报
回复
我们的IP是静态的,DNS服务器也是有的,SQL服务器上连接超时设置的是“无限期”,但程序访问时设置的是12秒,并发最大连接数目是200,现实运行中最多有10台机。
leecyi 2002-04-23
  • 打赏
  • 举报
回复
Up。通常是服务器设置了超时连接和并发连接数目。
我用网络服务器时也经常出现这种情况,但用本地服务器时从没这种现象发生。
sunyou 2002-04-23
  • 打赏
  • 举报
回复
你的机器的IP地址是否是自动获取的,如果是可能不容易连接上;
还有局域网设置内部DNS服务器了吗?如果没有也会有这样的问题;
再就是SQL2000服务器设置:连接超时值,并发连接最大数目限制;
ejetcs 2002-04-23
  • 打赏
  • 举报
回复
这个问题很难吗??
ejetcs 2002-04-22
  • 打赏
  • 举报
回复
是在局域网上,连接参数是没有问题的,因为上述情况并非是每一次都出现,只是偶尔会出,或者在某些节点容易出,至于访问量并不是很大,但会出现几个节点的并发访问情况。
scgqq 2002-04-22
  • 打赏
  • 举报
回复
你的数据库在网络上吗?数据库访问量大吗?仔细检查一下连接参数

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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