Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ilano

Backup SQL Server

Recommended Posts

Olá pessoal,

 

Temos em nossa empresa vários usuários acessando bancos de dados SQL Server 2005, sendo cada setor com um ódulo diferente. A questão é a seguinte, por exemplo, o financeiro, possuimos vários backups deste módulo e em alguns momentos nos é solicitado a restauração de um destes backups. Como procedimento normal, realizamos primeiramente o backup da base atual e em seguida restauramos o backup da semana passada, por exemplo. Qual a nossa idéia? Fazermos um aplicativo que faça o backup e, em seguida, faça a restauração da base q ele desejar, mas isso nas próprias estações. Fazer o backup e o restore no próprio servidor, isso ele já está fazendo direitinho, mas quando tentamos realizar os mesmos procedimentos a partir da estação do cliente não é realizado nada. A aplicação não apresenta erro algum, mas tb não realiza as tarefas à qual é destinada.

 

Como posso resolver isso? Onde preciso habilitar permissões de usuário para realizar estas tarefas via estação?

 

OBS.: Utilizo Delphi 7, conectando ao SQL Server 2005 via componente ADO.

 

Grato,

 

Ilano.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal,

 

Consegui melhorar significativamente o backup e o retore de minhas bases de dados, agora dando condições ao cliente de fazer o abackup da base oficial e restaurá-la numa base de teste usando o BACKUP DEVICE. Se alguém precisar, abaixo tem um exemplo. Só encontrei um probleminha! Em alguns casos preciso aguardar o término de alguns processos, transações, realizados pelo banco para aí sim dar certo o restore. Alguém poderia me dar uma dica de como contornar isso?

 

1º) Criei um novo Backup Device (ele deverá ser criado uma única vez):

 

With DMDados.SERVICOS Do

Begin

Close;

SQL.Clear;

SQL.Add('exec sp_addumpdevice ' + QuotedStr('disk') + ', ' + QuotedStr('conacc_BKP') + ', ' + QuotedStr(pArquivo));

ExecSQL;

End;

2º) Gerar o backup:

 

With DMDados.SERVICOS Do

Begin

Close;

SQL.Clear;

SQL.Add('backup database ESPECIALIZACAO to conacc_BKP with init');

ExecSQL;

End;

3º) Restaurar o backup para uma base de teste:

 

With DMDados.SERVICOS Do

Begin

Close;

SQL.Clear;

SQL.Add('USE ESPECIALIZACAO_TESTE');

SQL.Add('ALTER DATABASE ESPECIALIZACAO_TESTE SET READ_ONLY');

 

SQL.Add('USE master');

SQL.Add('Restore Database ESPECIALIZACAO_TESTE From conacc_BKP');

SQL.Add('WITH RECOVERY, REPLACE');

 

SQL.Add('USE ESPECIALIZACAO_TESTE');

SQL.Add('ALTER DATABASE ESPECIALIZACAO_TESTE SET READ_WRITE');

ExecSQL;

End;

Fui orientado a utilizar GO, assim alterei o código do restore para:

 

With DMDados.SERVICOS Do

Begin

Close;

SQL.Clear;

SQL.Add('USE ESPECIALIZACAO_TESTE');

SQL.Add('ALTER DATABASE ESPECIALIZACAO_TESTE SET READ_ONLY');

 

SQL.Add('GO');

 

SQL.Add('USE master');

SQL.Add('Restore Database ESPECIALIZACAO_TESTE From conacc_BKP');

SQL.Add('WITH RECOVERY, REPLACE');

 

SQL.Add('GO');

 

SQL.Add('USE ESPECIALIZACAO_TESTE');

SQL.Add('ALTER DATABASE ESPECIALIZACAO_TESTE SET READ_WRITE');

 

SQL.Add('GO');

 

ExecSQL;

End;

O problema é q está me retornando a seguinte mensagem:

 

Could not locate entry in sysdatabases for database 'GO'. No entry found with that name. Make sure that the name is entered correctly

Grato,

 

Ilano.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.