Ilano 0 Denunciar post Postado Janeiro 22, 2010 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
Ilano 0 Denunciar post Postado Fevereiro 3, 2010 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