Restaurar Base de Datos de SQL Server desde el Visual Basic .Net

Problema: Necesito restaurar, por medio de un programa, una base de datos del SQL Server
Solución: Encontré un mundillo de cosas en la web, así que decidí unificarlo todo.

Tengo un procedimiento, el cual utilizo para restaurar la base de datos.

Public Sub RestaurarBD(ByVal base As String, ByVal ruta As String, ByVal servidor As String, ByVal ArchivoMdf As String, ByVal ArchivoLdf As String, ByVal RutaMdf As String, ByVal RutaLdf As String)
 Dim sBackup As String = "RESTORE DATABASE " & base & _
    " FROM DISK = '" & ruta & "'" & _
    " WITH REPLACE, " & _
    "MOVE '" & ArchivoMdf & "' TO '" & RutaMdf & ".mdf', " & _
    "MOVE '" & ArchivoLdf & "' TO '" & RutaLdf & ".ldf'"

 Dim csb As New SqlConnectionStringBuilder
 csb.DataSource = servidor
 ' Es mejor abrir la conexión con la base Master
 csb.InitialCatalog = "master"
 csb.IntegratedSecurity = True

 Using con As New SqlConnection(csb.ConnectionString)
     Try
  con.Open()

  Dim cmdBackUp As New SqlCommand(sBackup, con)
  cmdBackUp.ExecuteNonQuery()
  MessageBox.Show("Se ha restaurado la copia de la base de datos.", _
                  "Restaurar base de datos", _
                  MessageBoxButtons.OK, MessageBoxIcon.Information)
  con.Close()
     Catch ex As Exception
  MessageBox.Show(ex.Message, _
    "Error al restaurar la base de datos", _
    MessageBoxButtons.OK, MessageBoxIcon.Error)
     End Try
 End Using
End Sub

Hay que recordar que si son rutas locales la sentencia sería, por ejemplo, C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\Data
Pero si son rutas de red la sentencia sería, por ejemplo, \\Servidor1\public\DATABASE

Se necesita saber el archivo físico del mdf y ldf, generalmente se llaman igual que la base de datos, por ejemplo, si restauro la base llamada Clientes, los archivos serían Clientes.mdf y Clientes.lfd respectivamente. Pero OJO, no siempre se llaman así, por lo que deben verificar el nombre de cada archivo.
Así mismo, los archivos mdf y ldf suelen ir en la misma carpeta en donde se encuentra la Data del SQL Server, pero esto no es una regla exacta, sobre todo si se trabaja en una red local, por lo que deben también verificar esto.

Tener en cuenta la conexión, el que pongo de ejemplo es un genérico que sirve cuando la base de datos es local, de ser un servidor en red, deberá tener su propio usuario y contraseña de autenticación.

About these ads
Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

%d personas les gusta esto: