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:
Listar os banco de dados existente no SQL Server
Efetuar o BACKUP de um banco de dados no SQL Server
Efetuar o RESTORE de um banco de dados no SQL Server
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 :
ObtemBancoDeDadosSQLServer
BackupDataBase
RestauraDataBase
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