q:=TADOQuery.Create(nil);//q为Tadoquery q.Connection:=ADOC;//adoc为sql数据库路径 q.Close; q.SQL.Clear; q.SQL.Add('restore database glxt from disk = ' + ''''+IE_lj.Text+''''); q.ExecSQL; showmessage('数据库以成功恢复成功!'); q.Close; q.free; end;出现问题:因为数据库正在使用,没有获得对数据库的排他访问权
让你看看我得问题: with Dmcsdemo.QueryCsDemo do begin close; sql.Clear; SQL.Add('use master'); // SQL.Add(' EXEC sp_dboption ''test'', ''dbo use only'', ''true''') ; SQL.Add('restore database test'); SQL.Add('from disk = ''e:\test'''); SQL.Add('with recovery'); // SQL.Add(' EXEC sp_dboption ''test'', ''dbo use only'',''false''') ; execsql; end; 我已经设置数据库为离线状态但是:出现问题:因为数据库正在使用,没有获得对数据库的排他访问权
打开SQLServer的Agent任务 RESTORE DATABASE data1 FROM DISK '''+edt1.Text+'\Backup\Backup.BAK'' WITH MOVE ''data1_Data''TO '''+edt1.Text+'\data1Data.mdf'' MOVE ''data1_Log'' TO '''+edt1.Text+'\data1Log.ldf''
with Dmcsdemo.QueryCsDemo do begin close; sql.Clear; SQL.Add('use master'); SQL.Add('restore database test'); SQL.Add('from disk = ''e:\test'''); SQL.Add('with replace, norecovery,'); SQL.Add('move ''ps_Data'' to ''e:\data\test.mdf'','); sql.Add('move ''ps_log'' to '' e:\date\text.ldf''' ); execsql; end; 为什么在SQLsever中SQL语句可以正常执行,但在前台就不行了呢?
有一句话错了:应该是 from disk = 'e:\ps.bad'
// Backup!with ADOQuery1 do begin close; sql.Clear; sql.Add('backup database wyh_reservoir'); sql.Add('to disk='+''''+Edt_Path.Text+''''); execsql; end;//restore with ADOQuery1 do begin close; sql.Clear; sql.Add('SHUTDOWN'); execsql; end; sleep(20000);Adoconnection1.connected:=true; with ADOQuery1 do begin close; sql.Clear; sql.Add('restore database wyh_reservoir'); sql.Add('from disk='+''''+Edt_Path.Text+''''); execsql; end;
var oSQLServerDMOApp : Variant; oSQLServer: Variant; begin oSQLServerDMOApp := CreateOleObject('SQLDMO.Application'); oSQLServer := CreateOleObject('SQLDMO.SQLServer'); //If oSQLServer.Status = SQLDMOSvc_Running Then oSQLServer.Stop ; sleep(10000); //If oSQLServer.Status = SQLDMOSvc_Paused Then oSQLServer.Continue // Else oSQLServer.Start; oSQLServer.RefreshStatus ; end; 它说dmo句柄无效,该怎么写啊
q.Connection:=ADOC;//adoc为sql数据库路径
q.Close;
q.SQL.Clear;
q.SQL.Add('restore database glxt from disk = ' + ''''+IE_lj.Text+'''');
q.ExecSQL;
showmessage('数据库以成功恢复成功!');
q.Close;
q.free;
end;出现问题:因为数据库正在使用,没有获得对数据库的排他访问权
with Dmcsdemo.QueryCsDemo do
begin
close;
sql.Clear;
SQL.Add('use master');
// SQL.Add(' EXEC sp_dboption ''test'', ''dbo use only'', ''true''') ;
SQL.Add('restore database test');
SQL.Add('from disk = ''e:\test''');
SQL.Add('with recovery');
// SQL.Add(' EXEC sp_dboption ''test'', ''dbo use only'',''false''') ;
execsql; end;
我已经设置数据库为离线状态但是:出现问题:因为数据库正在使用,没有获得对数据库的排他访问权
RESTORE DATABASE data1
FROM DISK '''+edt1.Text+'\Backup\Backup.BAK''
WITH MOVE ''data1_Data''TO '''+edt1.Text+'\data1Data.mdf''
MOVE ''data1_Log'' TO '''+edt1.Text+'\data1Log.ldf''
begin
close;
sql.Clear;
SQL.Add('use master');
SQL.Add('restore database test');
SQL.Add('from disk = ''e:\test''');
SQL.Add('with replace, norecovery,');
SQL.Add('move ''ps_Data'' to ''e:\data\test.mdf'',');
sql.Add('move ''ps_log'' to '' e:\date\text.ldf''' );
execsql;
end;
为什么在SQLsever中SQL语句可以正常执行,但在前台就不行了呢?
from disk = 'e:\ps.bad'
begin
close;
sql.Clear;
sql.Add('backup database wyh_reservoir');
sql.Add('to disk='+''''+Edt_Path.Text+'''');
execsql;
end;//restore
with ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('SHUTDOWN');
execsql;
end; sleep(20000);Adoconnection1.connected:=true; with ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('restore database wyh_reservoir');
sql.Add('from disk='+''''+Edt_Path.Text+'''');
execsql;
end;
oSQLServer: Variant;
begin
oSQLServerDMOApp := CreateOleObject('SQLDMO.Application');
oSQLServer := CreateOleObject('SQLDMO.SQLServer'); //If oSQLServer.Status = SQLDMOSvc_Running Then
oSQLServer.Stop ;
sleep(10000);
//If oSQLServer.Status = SQLDMOSvc_Paused Then oSQLServer.Continue
// Else
oSQLServer.Start;
oSQLServer.RefreshStatus ;
end;
它说dmo句柄无效,该怎么写啊
oSQLServer := CreateOleObject('SQLDMO.SQLServer');
//这里加一句连接到具体的服务器上就行了。
oSQLServer.Connect('.', 'sa', '');//.指localhost
//If oSQLServer.Status = SQLDMOSvc_Running Then
oSQLServer.Stop ;