Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
bioshock

Problema com Database SQL

Recommended Posts

bioshock

Boas,

Eu com o Access nunca tive este tipo de problemas mas surgiu-me agora um que não sei mesmo como hei de fazer..

Eu tenho um processo que faz backup das bases de dados, e eu fazia perfeitamente o backup da BD em Access, o problema está em fazer backup da BD em SQL, pois diz que o processo está a ser utilizado.

De que forma é que posso dar a volta a isto? Obrigado!  :D

Share this post


Link to post
Share on other sites
jpaulino

E como estás a fazer o backup? Não me digas que estás a tentar copiar o ficheiro?

Share this post


Link to post
Share on other sites
pmaster

Penso que tens de usar o Sql Dump, é o que uso quando trabalho com Mysql

Share this post


Link to post
Share on other sites
bioshock

E como estás a fazer o backup? Não me digas que estás a tentar copiar o ficheiro?

Sim, sempre o fiz com o Access e funcionava.

Penso que tens de usar o Sql Dump, é o que uso quando trabalho com Mysql

Para que serve mais concretamente?

Share this post


Link to post
Share on other sites
jpaulino

Sim, sempre o fiz com o Access e funcionava.

Pois, mas o Access é bem diferente ... não tem processo nem é um SGBD.

Tens varias maneiras de o fazer:

Usando um Stored Procedure

http://weblogs.sqlteam.com/tarad/archive/2008/05/21/60606.aspx

Script para automação

http://www.sqldbatips.com/showarticle.asp?ID=27

Código usando SqlServer.Management

http://www.mindfiresolutions.com/Backup-SQL-Database-Through-Code-In-VBNET-846.php

Share this post


Link to post
Share on other sites
bioshock

O último link parece-me ser o mais "apelativo", assim que possa experimento.

Obrigado.

Share this post


Link to post
Share on other sites
bioshock

Imports Microsoft.SqlServer.Management.Common
Imports Microsoft.SqlServer.Management.Smo
Dim WithEvents oBackup As New Backup
    Private Sub BackupSqlDatabase()

        Dim conn As New ServerConnection("\SQLEXPRESS", "", "") ' -- set SQL server connection given the server name, user name and password
        Dim oSQLServer As New Server(conn) '--create the SMO server object using connection

        Dim OrigBackupPath As String = oSQLServer.Information.MasterDBPath.Replace(Application.StartupPath & "\DataBase123.mdf", Application.StartupPath & "\Backup\DataBase123BACKUP.mdf") ' -- set the path where backup file will be stored

        Dim bkDevItem As New BackupDeviceItem(OrigBackupPath, DeviceType.File) ' -- create SMO.Backupdevice object

        With oBackup ' Set the backup object property 
            .Action = BackupActionType.Database
            .Database = DataBase123.mdf
            .Devices.Add(bkDevItem)
            .Initialize = True
            .Checksum = True
            .ContinueAfterError = True
            .Incremental = False
            .LogTruncation = BackupTruncateLogType.Truncate
            .SqlBackup(oSQLServer) ' backup SQL database
        End With

    End Sub

Tentei adaptar o código, mas dá-me erro na declaração da variavel "oBackup"  (não detecta " As New Backup " mas os imports estão a funcionar bem, e por consequencia tenho alguns erros nas linhas: BackupDeviceItem, BackupActionType, BackupTruncateLogType.

Share this post


Link to post
Share on other sites
bioshock

Boas pmaster,

Eu já resolvi o problema, precisava de exportar a dll smoextended e funcionou. Mas isto tem uns "não!". Quero com isto dizer que sou obrigado a fazer o backup para a pasta backup do SQL..não me deixa escolher o directório.

Mas vou dar uma vista de olhos nesse exemplo do macoratti. Obrigado!  :thumbsup:

Share this post


Link to post
Share on other sites
pmaster

Penso que com este exemplo do marcoratti dá para escolheres o destino do backup, digo isto por causa deste excerto:

Dim cmdBackup As New SqlCommand("BACKUP DATABASE [" & nomeDB & "] TO DISK = '" & backupFile & "'", cn)

Por causa do "to disk"

Share this post


Link to post
Share on other sites
bioshock

Assim de gás pelo que exemplo que estive a fazer, ele apenas me dá erro nesta linha:

Dim sqlUtils As New SqlServer

Pelo que andei a ler pelo google, parece que preciso de alguns componentes do SQL 2005, mas eu uso SQL 2008.. 🤔

Share this post


Link to post
Share on other sites
bioshock

"Requirements

Visual Studio .NET 2005 (For source code)

.NET Framework 2.0

Microsoft SQL Server 2000 or Microsoft SQL Express 2005 or Microsoft SQL Server 2005 client components (For SQL-DMO Library)"

Share this post


Link to post
Share on other sites
bioshock

Bem, este problema também já está resolvido. (A Library..)

O problema é que eu não consigo especificar onde guardar o backup. Pelo código que eu tenho ele obrigatoriamente mete na pasta backup\ do SQL Server

   

    Dim a As SQLDMO.Backup
        Dim svr As SQLDMO._SQLServer
        Try
            a = New SQLDMO.BackupClass()
            svr = New SQLDMO.SQLServerClass()

            svr.LoginSecure = False
            svr.Connect("Root\SQLEXPRESS", "sa", "123")

            a.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database
            a.Database = "BaseDados"
            a.Files = "BackupBaseDados.mdf"
            a.BackupSetName = "BaseDados"
            a.BackupSetDescription = "Database backup"
            a.Initialize = True
            a.SQLBackup(svr)

            svr.DisConnect()
            svr = Nothing
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try

Se alguém souber como alterar o caminho do backup..que apite  :thumbsup:

Share this post


Link to post
Share on other sites
duduml

Basta criares um form de configuração onde o user mete os dados, guardas num .txt e depois no evento load carregas as vars com os valores....

é isso que queres???

EDIT:

ou queres mesmo escolher apenas um caminho?


"use windows, você merece!"

Share this post


Link to post
Share on other sites
bioshock

A linha de código: "a.Files" já está direccionada para a pasta \Data\Backup do SQL. E mesmo que eu ponha outra pasta ele vai assumir \Data\Backup\NomeDaPastaQueEuEscolhi... ou seja, wrong!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.