VB.NET -  Backup e Restore no SQL Server

 

Realizar Backup e Restore em Banco de dados do SQL Server é muito simples usando a ferramenta Enterprise Manager ; basta usar as opções do menu Tools:

 

 

Como fazer isto via código ?

 

Vamos criar um projeto no Visual Studio .NET do tipo Windows Application usando a linguagem VB.NET. Neste projeto você vai aprender a:

No formulário padrão do projeto insira três controles Button , um ListBox e um GroupBox conforme a figura abaixo:

 

 

Como vamos acessar o SQL Server deveremos importar o namespace :  Imports System.Data.SqlClient

 

O código da classe

 

Vou criar um módulo de classe usando o menu Project opção Add Class com o nome de SQLServer.vb e nele irei criar 3 métodos :

O código de cada método é dado a seguir:

 

a- ObtemBancoDeDadosSQLServer - retorna uma string com a relação dos banco de dados existentes no SQL Server.

 

Estou abrindo uma conexão com o banco de dados MASTER e usando a tabela sysdatabases para obter o nome dos banco de dados

 

Function ObtemBancoDeDadosSQLSever(ByVal ConnString As String) As String()
        Dim cn As New SqlConnection(ConnString)
        Dim dbLista As New ArrayList
        ' retorn o nome de todos os banco de dados da tabela sysdatabases em MASTER
        Dim cmd As New SqlCommand("SELECT [name] FROM sysdatabases", cn)
        Dim reader As SqlDataReader
        cn.Open()
        Try
            reader = cmd.ExecuteReader()
        Catch ex As Exception
            MsgBox(ex.Message())
        End Try
        While reader.Read()
            ' inclui o nome no arraylist
            dbLista.Add(reader("name"))
        End While
        cn.Close()
        ' retorna o array de strings 
        Return dbLista.ToArray(GetType(String))

    End Function

 

 

b - BackupDatabase - Estou usando o comando BACKUP DATABASE para fazer o backup do banco de dados selecionado na caixa de listagem.

 

   Function BackupDatabase(ByVal connString As String, ByVal nomeDB As String, ByVal backupFile As String)

        Dim cn As New SqlConnection(connString)

        Try
            ' comando para fazer o backup do Banco de dados
            Dim cmdBackup As New SqlCommand("BACKUP DATABASE [" & nomeDB & "] TO DISK = '" & backupFile & "'", cn)
            cn.Open()
            cmdBackup.ExecuteNonQuery()
        Finally
            cn.Close()
        End Try
    End Function

 

 

c - RestauraDatabase - Estou usando o comando RESTORE DATABASE para fazer a restauração do banco de dados selecionado na caixa de listagem.

 

Function RestauraDatabase(ByVal connString As String, ByVal nomeDB As String, ByVal backupFile As String)

        Dim cn As New SqlConnection(connString)
        Try
            'comando para restaurar o banco de dados
            Dim cmdBackup As New SqlCommand("RESTORE DATABASE [" & nomeDB & "] FROM DISK = '" & backupFile & "'", cn)
            cn.Open()
            cmdBackup.ExecuteNonQuery()
        Finally
            cn.Close()
        End Try
    End Function

 

Código do formulário

Para usar estes métodos devemos criar uma instância da classe no formulário do projeto. Abaixo temos o código para cada um dos botões (Evento Click):

O código do botão - Relação de banco de dados no SQL Server:


    
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Dim conexaoSQLServer As String = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Master"
        Dim sqlUtils As New SQLServer

        Dim databases() As String = sqlUtils.ObtemBancoDeDadosSQLSever(conexaoSQLServer)
        Dim listaDB As String

        For Each listaDB In databases
            lstBDSQLServer.Items.Add(listaDB)
        Next
    End Sub

 

 

Código do botão de Backup:


    
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim sqlUtils As New SQLServer

        Dim conexaoSQLServer As String = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Master"
        Try
            sqlUtils.BackupDatabase(conexaoSQLServer, lstBDSQLServer.SelectedItem, "D:\TesteSQLServerBackup.bak")
            MsgBox("BACKUP DO BANCO DE DADOS   " & lstBDSQLServer.SelectedItem & "  FEITO COM SUCESSO !")
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

 

 

Código do botão de restauração:

 

  Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim conexaoSQLServer As String = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Master"

        Dim sqlUtils As New SQLServer

        Try
            sqlUtils.RestauraDatabase(conexaoSQLServer, lstBDSQLServer.SelectedItem, "D:\TesteSQLServerBackup.bak")
            MsgBox("RESTAURAÇÃO DO BANCO DE DADOS  " & lstBDSQLServer.SelectedItem & "  EFETUADA COM SUCESSO !")
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

    End Sub

Executando o projeto temos na figura abaixo um exemplo obtido para minha máquina local:

Eu sei , é apenas VB.NET mas eu gosto.


José Carlos Macoratti