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 databaseslstBDSQLServer.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
        TrysqlUtils.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