主题:急救!关于SQL SERVER数据库的还原问题
在数据库备份没有问题,但在数据库还原时总是提示数据库正在应用,但是我已经断开数据库Connection属性改为false了,并连接到master数据库了,我用的是ADO联接的!
大家帮我看看代码吧,真不容易,终于找到组织了,以前只能在DELPHI论坛里和别人混!希望大侠们多多指教!
void TMainForm::RestoreDatabase(AnsiString filename)
{
//关闭数据库备份还原查询控件
ADOQuery1->Close();
//清除SQL语句
ADOQuery1->SQL->Clear();
//生成数据库还原命令赋Restore字符串
AnsiString Restore("RESTORE DATABASE ");
//申请一个TIniFile类对象
TIniFile *ini;
//打开该系统数据库INI配置文件,从这儿读取需要还原数据库的名称和计算机的名称
ini = new TIniFile( ChangeFileExt( Application->ExeName, ".INI" ));
AnsiString str;
//从配置文件读数据库名
str = ini->ReadString("Database","Initial Catalog","");
//追加档案管理系统数据库名,+1的目的是前面有个空格
Restore.Insert(str,Restore.Length()+1);
//增加还原数据库SQL命令语句
ADOQuery1->SQL->Add(Restore);
//释放ini对象
delete ini;
//生成还原数据库文件的路径和文件名字符串
str="FROM DISK ='";
str+=filename;
str+="'";
//增加还原数据库文件的路径和文件名字符串SQL语句
ADOQuery1->SQL->Add(str);
//还原数据库SQL语句WITH参数设定,完整还原数据库
ADOQuery1->SQL->Add("WITH norecovery");
ADOConnection1->Connected=false;
DM->ADOConnection1->ConnectionString="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master;Data Source=计算名";
DM->ADOConnection1->Connected=true;
//执行SQL语句,但不打开数据集
ADOQuery1->ExecSQL();
}
大家帮我看看代码吧,真不容易,终于找到组织了,以前只能在DELPHI论坛里和别人混!希望大侠们多多指教!
void TMainForm::RestoreDatabase(AnsiString filename)
{
//关闭数据库备份还原查询控件
ADOQuery1->Close();
//清除SQL语句
ADOQuery1->SQL->Clear();
//生成数据库还原命令赋Restore字符串
AnsiString Restore("RESTORE DATABASE ");
//申请一个TIniFile类对象
TIniFile *ini;
//打开该系统数据库INI配置文件,从这儿读取需要还原数据库的名称和计算机的名称
ini = new TIniFile( ChangeFileExt( Application->ExeName, ".INI" ));
AnsiString str;
//从配置文件读数据库名
str = ini->ReadString("Database","Initial Catalog","");
//追加档案管理系统数据库名,+1的目的是前面有个空格
Restore.Insert(str,Restore.Length()+1);
//增加还原数据库SQL命令语句
ADOQuery1->SQL->Add(Restore);
//释放ini对象
delete ini;
//生成还原数据库文件的路径和文件名字符串
str="FROM DISK ='";
str+=filename;
str+="'";
//增加还原数据库文件的路径和文件名字符串SQL语句
ADOQuery1->SQL->Add(str);
//还原数据库SQL语句WITH参数设定,完整还原数据库
ADOQuery1->SQL->Add("WITH norecovery");
ADOConnection1->Connected=false;
DM->ADOConnection1->ConnectionString="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master;Data Source=计算名";
DM->ADOConnection1->Connected=true;
//执行SQL语句,但不打开数据集
ADOQuery1->ExecSQL();
}