Criar sistema de Backup SQLServer com java

5 respostas
L

Galera estou interessado em criar um sistema de backups para um trabalho da faculdade, o que imaginei para essa ferramenta é o seguinte, nela conteria um agendador de tarefas para ficar sempre executando a minha ferramenta, tipo de hora em hora, para isso já pensei em criar um .bat com o comando schtasks para criar a tarefa, imagino que o comando para o backup vou utilizar algo de TSQL como será de hora em hora terei que ter uma linha com o FULL e outra com o DIFFERENTIAL, para complicar mais ainda minha situação estava imaginando salvar esses os backups numa pasta respectiva ao seu dia tipo Domingo, Segunda, Terça e por ai vai. O que mais preciso da ajuda de vocês é em saber dos programadores mais antigos se existe uma maneira de fazer pelo java e se um programador de nível iniciante conseguiria fazer e alguma ideia de como começar a estruturar esse codigo?

5 Respostas

K

Da pra fazer da. Eu ja fiz muita coisa integrando Java e SQL Server então vou lhe adiantar logo uma coisa.
Comandos que não geram uma ‘Tabela’ como resultado você so consegue saber se deu certo ou não.
No seu caso o ‘backup’

Outra dica é estudar o sqlcmd é o prompt do SQL Server, já que passar autenticação windows pelo Java é bem complicado.

Começa seu projeto e vai tirando duvidas por aqui.

L

Meu codigo ta ficando assim:

File diretorio = new File("C:\\BackupSqlServer");
                 diretorio.mkdir();      
        
    String comando = "C:\\BackupBat\\Tarefa.bat";

    try 
    {
    Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL "+comando); 
    }
    catch (IOException e) 
    {
    e.printStackTrace();
    }

Agendador de tarefas .bat ta assim:
schtasks /create /sc hourly /st 00:00 /tn “BackupSQLServer” /tr C:\BackupSqlServer\Backup.bat

SQLCMD Backup.bat assim:
SQLCMD -S LOCALHOST\SERVER -Q “BACKUP DATABASE [BDTeste] TO DISK=‘C:\meubanco.bak’ WITH FORMAT”

Agora minha duvida é a seguinte como comentei no inicio queria que o meu sistema criasse as pastas segunda, terça, quarta, etc e salvasse o backup no seu dia, aonde irei conseguir colocar esse comando no próprio código java ou no .bat do SQLCMD e se alguém sabe como faria isso?

Obrigado pela ajuda.

L

Mais uma duvida posso adicionar mais um caminho no meu backup tipo to salvando no C:\ mais poderia colocar mais um caminho, fazer uma copia do backup.

K

Certo. Te aconselho a trabalhar com o JodaTime melhor biblioteca de datas (minha opinião).

Data Atual
´DateTime d = new DateTime();
d.toString(“YYYY-MM-dd”)

Dia da semana
´Locale bLocale = new Locale(“pt”, “BR”);
getData().dayOfWeek().getAsText(bLocale) ;´

Na questão de passar o caminho do backup a minha sugestão é que ao invés de você ter um script fixo Backup.bat
Você cria esse arquivo bat toda que for executar. Assim você ja cria ele com os parâmetros certos

L

Blz vou trabalhar em cima dessa ideia e depois posto o resultado. Muito obrigado.

Criado 23 de fevereiro de 2016
Ultima resposta 29 de fev. de 2016
Respostas 5
Participantes 2