两台SQL SRV服务器,先连一台,如果连不上就连第2台,第2台如果也连不上,我就不停的重复刚才的步骤,可是怎么搞得跟死机似的,我的方法看来很失败。 //连接主SQL SERVER服务器,如果失败就连第二台。
String sTmp0= "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Password=";
String sTmp1= srv1Psw+";Initial Catalog="+DATABASENAME+";Data Source="+ srv1Name + ";Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False";
String sPath=sTmp0+sTmp1; try {
ADOConnection->Connected = false;
ADOConnection->ConnectionString = (WideString)sPath;
Sleep(500); //延时一下,要不有可能断开后无法连接
ADOConnection->Connected = true;
//ShowMessage("现在连得第一台");
return true;
}
catch(...){
try {
sTmp0= "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Password=";
sTmp1= srv2Psw+";Initial Catalog="+DATABASENAME+";Data Source="+ srv2Name + ";Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False";
sPath=sTmp0+sTmp1;
ADOConnection->Connected = false;
ADOConnection->ConnectionString = (WideString)sPath;
Sleep(500); //延时一下,要不有可能断开后无法连接
ADOConnection->Connected = true;
//ShowMessage("现在连得第2台");
return true;
}
catch(...){
return false;
}
}
String sTmp0= "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Password=";
String sTmp1= srv1Psw+";Initial Catalog="+DATABASENAME+";Data Source="+ srv1Name + ";Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False";
String sPath=sTmp0+sTmp1; try {
ADOConnection->Connected = false;
ADOConnection->ConnectionString = (WideString)sPath;
Sleep(500); //延时一下,要不有可能断开后无法连接
ADOConnection->Connected = true;
//ShowMessage("现在连得第一台");
return true;
}
catch(...){
try {
sTmp0= "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Password=";
sTmp1= srv2Psw+";Initial Catalog="+DATABASENAME+";Data Source="+ srv2Name + ";Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False";
sPath=sTmp0+sTmp1;
ADOConnection->Connected = false;
ADOConnection->ConnectionString = (WideString)sPath;
Sleep(500); //延时一下,要不有可能断开后无法连接
ADOConnection->Connected = true;
//ShowMessage("现在连得第2台");
return true;
}
catch(...){
return false;
}
}
建议设置ADOConnection的Timeout短一些.
不推荐使用Sleep()函数.