ERRO AO EXCLUIR E RESTAURAR BANCO
Tenho uma aplicação em vb.net e nela eu faço backup de um banco de dados e depois, se quiser restaurá-lo, clicando em um botão, o banco em uso deve ser excluÃdo e depois restaurado atraves do arquivo .bak.
Porém, quando clico no botão, ele me retorna um erro dizendo que o banco está em uso e por isso não pode excluÃ-lo para depois restaurá-lo.
Segue abaixo o código do botão
Lembrando que todo SQL.STRINGCON2 é a minha string de conexão, que é :
Public stringcon2 As String = [Ô]Password=etesp;Persist Security Info=True;User ID=sa;Initial Catalog=master[Ô]
código do botão \/
[ô]define a conexão
Dim cn As New SqlConnection()
cn.ConnectionString = sql.stringcon2
[ô]define comando
Dim cmd As New SqlCommand()
Dim cmd2 As New SqlCommand()
[ô]associar comando à conexão
cmd.Connection = cn
cmd2.Connection = cn
[ô]define instrucao SQL
Dim instrucaosql As String = String.Format([Ô]Drop database LIVRARIA_BETEL[Ô])
Dim instrucaosql2 As String = String.Format([Ô]use master[Ô])
[ô]passar instrucao para o comando
cmd.CommandText = instrucaosql
cmd2.CommandText = instrucaosql2
[ô]especifica o tipo de comando
cmd.CommandType = CommandType.Text
cmd2.CommandType = CommandType.Text
Try
cn.Open()
cn.ChangeDatabase([Ô]master[Ô])
cmd2.ExecuteNonQuery()
cmd.ExecuteNonQuery()
MsgBox([Ô]Banco de dados LIVRARIA_BETEL excluÃdo com sucesso...[Ô], MsgBoxStyle.Information)
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
Finally
[ô] fecha a conexao
cn.Close()
End Try
Dim sqlUtils As New SQLServer
Dim dir As String
dir = My.Application.Info.DirectoryPath
Dim conexaoSQLServer As String = sql.stringcon2
Try
sqlUtils.RestauraDatabase(conexaoSQLServer, [Ô]LIVRARIA_BETEL[Ô], dir & [Ô]\BackupLivrariaBetel.bak[Ô])
MsgBox([Ô]RESTAURAÇÃO DO BANCO DE DADOS LIVRARIA_BETEL EFETUADA COM SUCESSO ![Ô])
Dim source As String = [Ô]Restauração do Banco de Dados realizado por: [Ô]
Dim source2 As String = [Ô]Administrador - em [Ô] & Today & [Ô] as [Ô] & TimeOfDay
[ô] Encripta a string
Dim result As String = Crypto.Encrypt(source)
Dim result2 As String = Crypto.Encrypt(source2)
Dim fluxoTexto As IO.StreamWriter
If IO.File.Exists(dir & [Ô]\LogRestauracaoBD.txt[Ô]) Then
fluxoTexto = New IO.StreamWriter(dir & [Ô]\LogRestauracaoBD.txt[Ô], True)
fluxoTexto.WriteLine(result2)
fluxoTexto.Close()
Else
Dim objStream As New System.IO.FileStream(dir & [Ô]\LogRestauracaoBD.txt[Ô], IO.FileMode.OpenOrCreate)
Dim Arq As New System.IO.StreamWriter(objStream)
Arq.WriteLine(result)
Arq.WriteLine(result2)
Arq.Close()
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
CÓDIGO DA FUNCAO RESTAURA BD EM OUTRA CLASSE
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
O QUE POSSO FAZER PARA RESOLVER?
Alguem ajuda?
Porém, quando clico no botão, ele me retorna um erro dizendo que o banco está em uso e por isso não pode excluÃ-lo para depois restaurá-lo.
Segue abaixo o código do botão
Lembrando que todo SQL.STRINGCON2 é a minha string de conexão, que é :
Public stringcon2 As String = [Ô]Password=etesp;Persist Security Info=True;User ID=sa;Initial Catalog=master[Ô]
código do botão \/
[ô]define a conexão
Dim cn As New SqlConnection()
cn.ConnectionString = sql.stringcon2
[ô]define comando
Dim cmd As New SqlCommand()
Dim cmd2 As New SqlCommand()
[ô]associar comando à conexão
cmd.Connection = cn
cmd2.Connection = cn
[ô]define instrucao SQL
Dim instrucaosql As String = String.Format([Ô]Drop database LIVRARIA_BETEL[Ô])
Dim instrucaosql2 As String = String.Format([Ô]use master[Ô])
[ô]passar instrucao para o comando
cmd.CommandText = instrucaosql
cmd2.CommandText = instrucaosql2
[ô]especifica o tipo de comando
cmd.CommandType = CommandType.Text
cmd2.CommandType = CommandType.Text
Try
cn.Open()
cn.ChangeDatabase([Ô]master[Ô])
cmd2.ExecuteNonQuery()
cmd.ExecuteNonQuery()
MsgBox([Ô]Banco de dados LIVRARIA_BETEL excluÃdo com sucesso...[Ô], MsgBoxStyle.Information)
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
Finally
[ô] fecha a conexao
cn.Close()
End Try
Dim sqlUtils As New SQLServer
Dim dir As String
dir = My.Application.Info.DirectoryPath
Dim conexaoSQLServer As String = sql.stringcon2
Try
sqlUtils.RestauraDatabase(conexaoSQLServer, [Ô]LIVRARIA_BETEL[Ô], dir & [Ô]\BackupLivrariaBetel.bak[Ô])
MsgBox([Ô]RESTAURAÇÃO DO BANCO DE DADOS LIVRARIA_BETEL EFETUADA COM SUCESSO ![Ô])
Dim source As String = [Ô]Restauração do Banco de Dados realizado por: [Ô]
Dim source2 As String = [Ô]Administrador - em [Ô] & Today & [Ô] as [Ô] & TimeOfDay
[ô] Encripta a string
Dim result As String = Crypto.Encrypt(source)
Dim result2 As String = Crypto.Encrypt(source2)
Dim fluxoTexto As IO.StreamWriter
If IO.File.Exists(dir & [Ô]\LogRestauracaoBD.txt[Ô]) Then
fluxoTexto = New IO.StreamWriter(dir & [Ô]\LogRestauracaoBD.txt[Ô], True)
fluxoTexto.WriteLine(result2)
fluxoTexto.Close()
Else
Dim objStream As New System.IO.FileStream(dir & [Ô]\LogRestauracaoBD.txt[Ô], IO.FileMode.OpenOrCreate)
Dim Arq As New System.IO.StreamWriter(objStream)
Arq.WriteLine(result)
Arq.WriteLine(result2)
Arq.Close()
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
CÓDIGO DA FUNCAO RESTAURA BD EM OUTRA CLASSE
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
O QUE POSSO FAZER PARA RESOLVER?
Alguem ajuda?
ALGUEM ?
Tópico encerrado , respostas não são mais permitidas