Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/10/2009, 20:38
fck_shady
 
Fecha de Ingreso: septiembre-2009
Mensajes: 9
Antigüedad: 15 años, 5 meses
Puntos: 0
Pregunta Restaurar BD SQL 2005 desde C#

Hola gente..
Tengo el siguiente problema.. Les Cuento

Tengo un Boton para poder restaurar una Base de Datos de SQL 2005.. Funciona bien.. pero el problema llega si abro esa base de datos antes de Restaurar.. Tengo el Siguiente Ejemplo
Código:
 
private void Form1_Load(object sender, EventArgs e)
        {
            string strconn = "Data Source=Shady;Initial Catalog=Practico 6 - Brian;Integrated Security=true";
            SqlConnection conn = new SqlConnection();

            conn.ConnectionString = strconn;
            SqlDataAdapter da = new SqlDataAdapter("select * from Pais", conn);
            DataSet ds = new DataSet();  
            da.Fill(ds);

            comboBox1.DataSource = ds.Tables[0];
            comboBox1.DisplayMember = "NombrePais";
            comboBox1.ValueMember = "IDPais";           
        }



y el Boton Restaurar BD



        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                string strmaster = "Data Source=Shady;Initial Catalog=master;Integrated Security=true";
                SqlConnection masterconn = new SqlConnection();

                masterconn.ConnectionString = strmaster;

                OpenFileDialog ofd = new OpenFileDialog();
                ofd.Title = "Abrir BD";
                ofd.Filter = "Backup SQL | *.bak";
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    MessageBox.Show("RESTORE DATABASE [Practico 6 - Brian] FROM DISK='" + ofd.FileName + "' WITH REPLACE");
                    SqlCommand comando = new SqlCommand();
                    comando.CommandText = "RESTORE DATABASE [Practico 6 - Brian] FROM DISK='" + ofd.FileName + "' WITH REPLACE";
                    comando.Connection = masterconn;
                    masterconn.Open();
                    comando.ExecuteNonQuery();
                    masterconn.Close();
                }
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.Message, "Error");
            }
        }
el caso es q si no abro la BD antes de hacer el Restore va todo bien.... pero con este ejemplo la cosa cambia.. Me da el Siguiente Error:

Cita:
"No se pudo obtener acceso exclusivo porque la base de datos está en uso."
como si la conexion siguiera abierta pero no...

en el evento load al Final probe con " conn.Dispose(); ".. pero todo sigue igual

Espero que alguien me pueda ayudar..
Gracias!!

Última edición por fck_shady; 20/10/2009 a las 10:38