none
Backup do Banco de Dados

    Question

  • Olá Amigos,

    Desenvolvi um programa usando o banco de dados SQL SERVER. Preciso porém fazer o backup do banco de dados.  Só que quem deve fazer o backup é o usuário. Só que ai teria de ensinar o usuário a utilizar o SQL Server...Ai pensei se teria uma forma de fazer o backup do BD a partir do programa que eu fiz....por exemplo eu colocaria um botão onde o usuário clicaria no botão e uma copia do banco de dados fosse feita....

    Alguém já passou por isso....Como posso fazer??

    Obrigado,

     

    Sunday, September 24, 2006 1:17 PM

Answers

  • Olá Marcos...

    Certa vez precisei fazer isso..vo te passar a função que eu fiz:

    Public Sub FazerBackup()

    Dim conexao As New SqlConnection("String de Conexao")

    Dim comando As New SqlCommand()

    comando.Connection = conexao

    Try

    comando.CommandText = "BACKUP DATABASE NOMEDOBANCODEDADOS to Disk = " & caminhobackup + "\NOMEDOBANCODEDADOS.bak" & ""

    conexao.Open()

    comando.ExecuteNonQuery()

    conexao.Close()

    MsgBox("Backup Realizado com Sucesso.", MsgBoxStyle.Information, strNomeSistema)

    Catch ex As Exception

    MsgBox("Erro ao fazer cópia de segurança.Tente novamente, se o erro persistir reinicie o sistema.", MsgBoxStyle.Information, "Erro")

    End Try

    End Sub

    Espero que te ajude

    Abraços,

    Regilan

    Sunday, September 24, 2006 1:24 PM
  • Ahhh..Caso precise restaurar o BD, utilize o seguinte comando:

    RESTORE DATABASE NOME_BD FROM DISK = CAMINHO_DO_BD\NOME_DO_BD

    Abraços!!!

    Regilan

    Sunday, September 24, 2006 1:42 PM

All replies

  • Olá Marcos...

    Certa vez precisei fazer isso..vo te passar a função que eu fiz:

    Public Sub FazerBackup()

    Dim conexao As New SqlConnection("String de Conexao")

    Dim comando As New SqlCommand()

    comando.Connection = conexao

    Try

    comando.CommandText = "BACKUP DATABASE NOMEDOBANCODEDADOS to Disk = " & caminhobackup + "\NOMEDOBANCODEDADOS.bak" & ""

    conexao.Open()

    comando.ExecuteNonQuery()

    conexao.Close()

    MsgBox("Backup Realizado com Sucesso.", MsgBoxStyle.Information, strNomeSistema)

    Catch ex As Exception

    MsgBox("Erro ao fazer cópia de segurança.Tente novamente, se o erro persistir reinicie o sistema.", MsgBoxStyle.Information, "Erro")

    End Try

    End Sub

    Espero que te ajude

    Abraços,

    Regilan

    Sunday, September 24, 2006 1:24 PM
  • Ahhh..Caso precise restaurar o BD, utilize o seguinte comando:

    RESTORE DATABASE NOME_BD FROM DISK = CAMINHO_DO_BD\NOME_DO_BD

    Abraços!!!

    Regilan

    Sunday, September 24, 2006 1:42 PM
  • Só uma dúvida: Este procedimento "extrai" os dados do banco de dados para um arquivo ou simplesmente faz uma cópia do banco de dados?? (por exemplo, extrai os dados para banco.bak ou faz uma cópia do arquivo banco.mdf para banco.bak)

     

    Obrigado.

    Thursday, February 28, 2008 5:45 PM
  • Boa tarde!!!

     

    Como você pode vêr no comando abaixo, o backup é feito dos dois arquivos MDF e LDF.

     

    Exemplo de Backup com Restore

    -- COMANDO PARA SABER QUAL E O NOME LÓGICO E FÍSICO DO BANCO

    ------------------------------------------------------------------

    -- RESTORE FILELISTONLY FROM DISK = 'Caminhos Onde Será Salvo'

    -------------------------------------------------------------------

    dbcc shrinkdatabase (NomeDoBanco,0)

    go

    BACKUP DATABASE NomeDoBanco TO DISK = 'Caminho Onde Será Salvo' WITH INIT

    go

    USE master

    go

    DROP DATABASE NomeDoBancoDeDestino /*Aqui Ele apaga o Banco de Dados Por isso muito cuidado

    Ninguem pode estar usando o banco de dados*/

    go

    RESTORE DATABASE NomeDoBancoDeDestino

    FROM DISK = 'Camiho Onde Foi Salvo'

    WITH MOVE 'NomeDoBanco_Data' TO 'C:\Mssql\NomeDoBancoDeDestino.mdf',

    MOVE 'NomeDoBanco_Log' TO 'C:\Mssql\NomeDoBancoDeDestino.ldf'

    go

     

    Ou Restaurar os dois arquivos diretamente Como Abaixo:

     

    Exemplo de Recuperação de Banco de Dados

    use master

    go

    EXEC sp_attach_db @dbname = 'BancoDestino',

    @filename1 = 'C:\Mssql\BancoDestino.mdf',

    @filename2 = 'C:\Mssql\BancoDestino.ldf'

     

    Inté
    Thursday, February 28, 2008 6:44 PM
  •  

    Bom, trocando em miúdos (pra mim conseguir entender melhor.... hehehehe) , apenas faz uma cópia dos arquivos pra outra pasta. OK....

     

    Porém necessitava de algo um pouco diferente: Já pensando em futuras atualizações que meu aplicativo venha a ter, incluindo novas tabelas e relacionamentos,etc no banco de dados, gostaria que o usuário ao efetuar as atualizações não perca os dados que ele já lançou no aplicativo, pois com a atualização o novo banco de dados (vazio, mas contendo as atualizações necessárias) iria sobrepor o antigo com os dados do usuário. Minha idéia seria extrair os dados das tabelas do banco de dados antes da atualização, por meio de backup, e depois de efetuar a atualização, restaurar o backup dos dados lançados (claro que aí só importaria os dados de colunas em comum nos bancos de dados antes e depois da atualização).

     

    É possível fazer isso?

     

    Obrigado. 

    Thursday, February 28, 2008 7:09 PM
  • HClausing,

     

    Você pode fazer todo esse porcedimento sem precisar de ficar fazendo essa manobra, O backup com certeza é necesserário para um evetual problema na atualizaçãO.

     

    Mas Para Incluir uma Tabela, View, Stored Procedure, Basta criar um script conterndo todas as inclusões e alterações.

     

    Para Alterar a estrutura de uma tabela pode-se usar:

     

    ALTER TABLE MyTabel add Coluna4 INT

     

    e outros


     

    Thursday, February 28, 2008 7:47 PM
  •  

    Obrigado pela ajuda, vou tentar fazer dessa forma. Eu posso criar uma condição na abertura do aplicativo que verifica se a nova coluna de uma tabela que faz parte da atualização existe... se nao existir ele cria com esse script e grava... acho q deve funcionar... mais uma vez muito obrigado. Qualquer dúvida estarei postando aqui denovo.

     

    Ate mais!

    Friday, February 29, 2008 11:35 AM