jueves, 23 de febrero de 2012

Restaurar BD en visual studio 2010

los niveles de odio profundo e intenso que emano hacia visual son enormes, me molesta en gran medida programar en en ese lenguaje de programación, pero a veces no hay mas remedio que hacer de tripas corazón y hacer un cese a las hostilidades, el tema que me ocupa hoy es la restauración de una BD en visual, cosa que llevo algún tiempo intentando sin éxito hasta que conseguí la razón de mi problema, y es que por razones ajenas a mi entendimiento el sql management studio mantiene la conexión con la bd en todo momento y por lo tanto la base de datos no puede ser restaurada por estar en uso, y las herramientas de windows se rien y burlan de ti diciendo "Exclusive Access could not be obtained because the database is in use". ahora, encontré dos maneras de hacer esto, la primera es eliminar las conexiones existentes con la bd a través de:

   1: use master
   2: go
   3: alter database <dbname> set single_user with rollback immediate
   4: alter database <dbname> set multi_user 

la otra manera es utilizando, SQL management objects, el cual utilizará procedimintos propios de SMS dentro del visual... quedaría algo así:

   1: internal void RestoreDatabase(string backupFileName, string databaseName)
   2:  {    
   3:     Restore restore = new Restore();
   4:     restore.Database = databaseName;
   5:  
   6:  
   7:     restore.Devices.AddDevice(backupFileName, DeviceType.File);
   8:     restore.ReplaceDatabase = true;
   9:     _server.KillAllProcesses(databaseName);
  10:     restore.Wait();
  11:     restore.SqlRestore(_server);
  12:   }
 espero que les resulte util


Restaurar BD en visual studio 2010

los niveles de odio profundo e intenso que emano hacia visual son enormes, me molesta en gran medida programar en en ese lenguaje de program...