quarta-feira, 17 de novembro de 2010

Restore de uma banco de dados sql 2000

Um dia desses eu precisei criar um procedimento para efetuar o restore do banco de dados de um sistema. A princípio eu criei o procedimento no mesmo banco que eu queria restaurar e logicamente nao funcionou, pois como não tem como restaurar um banco em uso.
Então esse procedimento tem que ser criado em outro banco, no meu caso eu criei no banco Master (banco de dados de sistema). Se esse procedimento for usado em um sistema será necessário criar outra string de conexão com o banco que será utilizado, no meu caso com o banco Master.
Outra observação é limitar o acesso ao banco de dados a um usuário simples. Fazemos isso na seguinte query:
ALTER DATABASE EXEMPLO SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
Quando limitamos o acesso a um determinado banco de dados, como single user, estamos eliminando a possibilidade deste banco ser acesso simultaneamente por diversas conexões ou usuários.
Esse procedimento tem como parâmetro de entrada o caminho (diretório) onde se encontra o arquivo de backup.

CREATE PROCEDURE S_RESTORE_EXEMPLO

@ARQUIVO VARCHAR(255)

AS

DECLARE @strSQL varchar(300)

--Limita o acesso ao banco de dados a um usuário simples.
ALTER DATABASE EXEMPLO SET SINGLE_USER WITH ROLLBACK IMMEDIATE;

--efetua o restore
set @strSQL = 'RESTORE DATABASE EXEMPLO FROM DISK ='''+ @ARQUIVO +''' WITH FILE = 1, NOUNLOAD, STATS = 10'
exec (@strSQL)

--retorna o acesso ao banco a usuários múltiplos.

ALTER DATABASE EXEMPLO SET MULTI_USER;

Nenhum comentário:

Postar um comentário