CreateOLEObjectvar
             oSQLServer : Variant ;
           begin
             oSQLServer := CreateOLEObject  ('SQLDMO.SQLServer');
             oSQLServer.LoginTimeout := 30;
             oSQLServer.LoginSecure := False;
             oSQLServer.AutoReconnect := True;
             oSQLServer.Connect(sServer,sUser,sPassword);
             Result := oSQLServer;
             oSQLServer := NULL ;
           end;

解决方案 »

  1.   

    function LoginServerInstances (sServer,sUser,sPassword :string):Variant;//登陆到指定的SQLSERVER实例
    var
        oSQLServer : Variant ;
    begin
      oSQLServer := CreateOLEObject  ('SQLDMO.SQLServer');
      oSQLServer.LoginTimeout := 30;
      oSQLServer.LoginSecure := False;
      oSQLServer.AutoReconnect := True;
      oSQLServer.Connect(sServer,sUser,sPassword);
      Result := oSQLServer;
      oSQLServer := NULL ;
    end;procedure BackUpDataBase(sServer,sUser,sPassword,sDataBaseName:String);//备份数据库
    var
      oSQLServer,oBackUp : Variant;
    begin
       oSQLServer :=  LoginServerInstances(sServer,sUser,sPassword);
       oBackup := CreateOLEObject('SQLDMO.Backup');
       oBackup.Action := 1;
       oBackup.DataBase := sDataBaseName;
       oBackup.Files := ExtractFileDir(ParamStr(0)) + DateTimeToStr(Date) + '.bak';
       try
         try
           oBackup.SQLBackup(oSQLServer);
           ShowMesssage('备份成功,文件所在路径为''' + ExtractFileDir(ParamStr(0)) + DateTimeToStr(Date) + '.bak''');
         except
           ShowMessage('备份失败');
         end;
       finally
         oSQLServer.Disconnect;
         oBackup := Null;
         oSQLServer := NULL;
       end;
    end;procedure RestoreDataBase(sServer,sUser,sPassword,sDataBaseName:String);//还原数据库
    var
      oSQLServer,oRestore : Variant;
    begin
      oSQLServer :=  LoginServerInstances(sServer,sUser,sPassword);
      oRestore := CreateOLEObject('SQLDMO.Restore');
      oRestore.Files := ExtractFileDir(ParamStr(0)) + DateTimeToStr(Date) + '.bak';
      oRestore.DataBase := sDataBaseName;
      oRestore.ReplaceDataBase := True;
      try
        try
          oRestore.SQLRestore(oSQLServer);
          ShowMesssage('还原成功');
        except
          ShowMesssage('还原失败');
        end;
      finally
         oSQLServer.Disconnect;
         oRestore := Null;
         oSQLServer := NULL;
      end;
    end;
      

  2.   

    现在是还原数据库的时候,会提示'[Microsoft][ODBC SQL Server Driver][SQL Server]因为数据库正在使用,所以未能获得对数据库的排它访问权。'
       我已经断了与数据库的连接,可是怎么保证数据库不再使用呢?