DESESPERADO!! Preciso de criar funçoes em VB para Backup e Restore de bd em SQL Serve

Fil__

Power Member
Malta, tal como o topico diz tou DESESPERADO!! Preciso de criar funçoes em VB para Backup e Restore de bd em SQL Server 2005. Ja pesquisei e fartei-me de procurar (macoratti, etc...) e nada. Nao consigo nada de nada a funcionar. Peço-vos... AJUDEM POR FAVOR!!
 
Estou a usar este codigo
Código:
Dim conn As New OleDbConnection("Provider=SQLOLEDb.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=master;Data Source=(local)")
            Dim cm As New OleDbCommand
            cm.CommandText = "backup database master to disk='c:\Test.BAK'"
            cm.Connection = conn
            conn.Open()
            cm.ExecuteNonQuery()
            conn.Close()

mas ele diz que nao encontra o servidor sql. O que estou a fazer de errado?
 
Ve assim se ja funca ;)

dim conn as New SqlConnection("Data Source=xxx;Initial Catalog=xxx;Persist Security Info=True;User ID=xx;Password=xxx")

Claro corrige isto

conn.Open()
cm.Connection = conn
 
cm.Connection = conn
conn.Open()

ou
conn.Open()
cm.Connection = conn

é irrelevante para o caso.
Atribuis a ligacao e abre-la ou abres a ligacao e atrubuis a ligacao aberta é irrelevante desde que executes o comando depois da ligacao estar aberta.

O problema esta em: Data Source = (local) . Deve ser Data Souce=localhost
O comando so é executado em cm.ExecuteNonQuery()
 
Experimentei ocmo disseste C4 mas ele diz que o SQL server nao existe
Código:
        Try
            Dim conn As New OleDbConnection("Provider=SQLOLEDb.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=master;Data Source=localhost")
            Dim cm As New OleDbCommand
            cm.CommandText = "backup database master to disk='c:\Test.BAK'"
            cm.Connection = conn
            conn.Open()
            cm.ExecuteNonQuery()
            conn.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
 
Tens o sqlserver a correr na mesma maquina onde estas a correr a aplicacao?

Dica para ciar a connectionstring:
Criar um ficheiro bla.udl no desktop
Executar um duplo clique no ficheiro.
Executar todos os passos para ligar ao servidor: Escolher o provider, a bd , user, pass e Testar a ligacao.
Se o teste correr bem, gravar (OK).
Abrir o ficheiro com um editor de texto. A ConnectionString está la em plaintext.
 
Última edição:
Posso tentar.
Qual a BD que estas a utilizar?
editei o posta anterior para colocar la uma dica para criar a connection string
pode dar-se o caso de apesar do servidor estar a correr, nao permitir ligacoes.
 
Código:
    ''' <summary>
    ''' Faz um backup da base de dados
    ''' </summary>
    ''' <param name="sDir">destino da base de dados</param>
    ''' <param name="sFileName">nome da base de dados</param>
    ''' <param name="sPassword">opcional palavra passe</param>
    ''' <returns>true se ok</returns>
    ''' <remarks>false em caso de erro</remarks>
    Public Function BackUpDataBase(ByVal sDir As String, _
                                   ByVal sFileName As String, _
                          Optional ByVal sPassword As String = "") As Boolean
        Try
            Dim sQuery As String
            Dim sPams() As String = Split(m_sConnectionString.Trim, ";")
            Dim sBD As String = String.Empty

            'Extrai o nome da bd a partir da connection string..
            For Each sName As String In sPams
                If InStr(sName, "DATABASE") Then
                    sBD = sName.Substring(InStr(sName, "SERVER="))
                    If sBD.EndsWith(";") Then
                        sBD.Remove(sBD.LastIndexOf(";"))
                    End If
                End If
            Next

            sQuery = "BACKUP DATABASE '" & sBD & "' " & _
                         "TO DISK = '" & sDir & "' " & _
                         "WITH NAME = '" & sFileName & "', " & _
                         If(String.IsNullOrEmpty(sPassword), "", "PASSWORD = '" & sPassword & "', ") & _
                         "DIFFERENTIAL()"
            'Corre o comando
            Return Me.Execute(sQuery)
        Catch ex As Exception
            RaiseEvent OnError("BackUpDataBase", ex)
        End Try
    End Function
Para mais info.. vê este post: http://www.techzonept.com/showthread.php?t=350062

Compr.
 
Estou a usar uma bd que criei no sql server management. Chama-se mesmo bd e coloquei-a numa pasta que esta no c:\dados\bd.mdf

Código:
   Try
            Dim conn As New OleDbConnection("Provider=SQLOLEDb.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=master;Data Source=localhost")
            Dim cm As New OleDbCommand
            cm.CommandText = "backup database master to disk='c:\Test.BAK'"
            cm.Connection = conn
            conn.Open()
            cm.ExecuteNonQuery()
            conn.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

Esta e a string que o meu form tem logo ao inicio, pode ser que de pa te ajudar
Código:
    Dim Conx As String = "Data Source=.\SQLEXPRESS;AttachDbFilename='C:\Dados\bd.mdf';Integrated Security=True;Connect Timeout=30;User Instance=True"
 
Tenta com esta:
Provider=SQLOLEDb.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=master;Data Source=[NOME_DA_TUA_MAQUINA]\SQLEXPRESS"
Troca o [NOME_DA_TUA_MAQUINA] pelo nome da tua maquina ou por localhot
e posta o erro
 
O que e o ficheiro UDL C4? Desculpa, nao reparei nisso, mas tambem nao sei o que é
Olha, a mensagem de erro é esta:
[DBNETLIB][ConnectionOpen (Connect()).]O SQL Server não existe ou o acesso foi recusado.
Ajuda?
 
Por o que vi, penso que o problema está do lado do teu servidor.. verifica o servidor ..

Uma observação..
Estás a utilizar estas livrarias?
Imports System.Data.SqlClient
Imports System.Data.OleDb
Eu acho que estás a utilizar o "ODBC Driver", isto era/é utilizado muito em VB6 que também pode ser em .NET por interface Interop, mas eu não recomendo.

Na minha opinião acho que deverias utilizar as livrarias do .NET
System.Data.SqlClient
System.Data.OleDb


Pois ODBC Driver deixa dependências, e na minha opinião trabalhando com .NET já está obsoleto..
 
Última edição:
Back
Topo