日期:2014-05-18  浏览次数:20433 次

数据库多连几次后就显示链接失败了
下面是我写的一个vc用ado链接mssql的类,
在其他类中调用这个类的函数来实现与数据库的内容交互
开始运行很好的
可是不知道为什么用个几个小时候后
我的log文件显示:

[DBNETLIB][ConnectionOpen   (Connect()).]SQL   Server   不存在或拒绝访问。
2007-5-26   23:37:58 > > 错误:

-2147467259(80004005)

//==========================
下面是代码,
希望热心的前辈指点一二
谢谢!
///////////////////////////////////////////

BOOL   CConnSQL::ConnSQL()
{
BOOL   bSuc=FALSE;
try
{
OleInitialize(NULL);
hr   =   m_pConnection.CreateInstance( "ADODB.Connection ");///创建Connection对象
if(SUCCEEDED(hr))
{
TRACE( "adodb.connection   Create   instance   suc!\n ");
CString   sDS;
sDS.Format( "Provider=SQLOLEDB.1;Password=%s;Persist   Security   Info=True;User   ID=%s;Initial   Catalog=DbBaike;Data   Source=%s ", sqlPsw,sqlUser,sqlSvrIp);
hr   =   m_pConnection-> Open((_bstr_t)sDS,L " ",L " ",adOpenUnspecified);
bSuc=TRUE;
}
}
catch   (_com_error   &e)   {  
GenerateError( " ",e.Error(),e.Description());
bSuc=FALSE;
}
return   bSuc;
}

BOOL   CConnSQL::DisConnSQL()
{
m_pConnection-> Close();
::CoUninitialize();
//log_file( "CConnSQL::DisConnSQL() ");
return   TRUE;
}
BOOL   CConnSQL::ExecSQL(CString   sql)
{
BOOL   bSuc=TRUE;
bstr_t   str=(bstr_t)sql;
try
{
ConnSQL();
_RecordsetPtr   m_pRecordset   =   m_pConnection-> Execute(str,&RecordsAffected,adCmdText);
}
catch(_com_error   &e)
{
bSuc=FALSE;
DisConnSQL();
GenerateError(sql,e.Error(),e.Description());
return   bSuc;
}
DisConnSQL();
return   bSuc;
}

void   CConnSQL::GenerateError(CString   sql,   HRESULT   hr,   PWSTR   pwszDescription)
{
CString   strError;
strError.Format( "错误:%s\r\n%d(%x) ",sql,hr,hr);
strError   += "\n\n ";
strError   +=pwszDescription;
log_file( "> > %s ",strError);
// AfxMessageBox(strError);
}


------解决方案--------------------
与代码无关的,应该是服务器问题或权限问题。