ago 09

#WTF: “The UserLog directory in the registry is not valid.”

Essa entra pra série #WTF (Vivendo e aprendendo).

Ao instalar o Full Text Search em um dos nossos servidores, me deparei com o warning a seguir:

What!?

The User Log directory in the registry is not valid. Verify DefaultLog Key under the instance hive points to a valid directory

Leia mais »

jul 06

Valide seus backups com a prRestore

Se você perguntar para 10 profissionais qual o principal bem das empresas, a resposta será praticamente a mesma: Os dados que ela possui (e se você achava que era o funcionário, sinto te desiludir).
E para garantir que os seus dados estejam sempre prontos para serem recuperados em caso de desastre, basta você fazer o backup dela periodicamente, seguindo uma politica que te permita recuperá-la em um ponto no tempo (eu recomendo ler sobre a procedure criada pelo Edvaldo Castro sobre o assunto), correto??

giphy

Não… Não é…

Apenas o backup não vai te garantir que a base está pronta para ser restaurada quando precisar. Para isso, é necessário que você teste periodicamente os teus backups (sim, muita coisa pode acontecer para que seus backups não funcionem).

Mas ficar lembrando dos comandos ou então deixar um script armazenado para isso não é muito legal também… Porque não, então, automatizar a restauração e deixar o processo mais fácil de ser verificado? Em um dos grupos que eu participo, surgiu a dúvida sobre como automatizar esse processo e, pensando nisso, fiz a procedure prRestore, para tentar ajudar.

Ela está em fase inicial ainda, mas já ajuda em verificar o último backup FULL realizado e os “N” backups do log de transação subsequentes (essa era a dúvida principal).

Algumas observações:

  1. Para fazer algo que eu precisasse passar o mínimo de parâmetros possíveis eu parti do pressuposto de que os arquivos continuam no mesmo onde eles foram backupeados (?) originalmente.
  2. Como o propósito é testar os backups, aqui eu vou salvar os dados em uma pasta e os logs em outra. Nada impede de colocar na mesma pasta, mas se você quiser separar os dados em mais de uma pasta, não vai funcionar (valeria um item para a ToDo List?)
  3. Falta colocar para validar o diferencial… Esse é um item que entrará para ser feito futuramente.

Mas vamos lá: Como funciona??

Após aplicar o script, execute:

Onde:

  1. @origin_database_name: Nome do banco de origem (a.k.a. O banco que foi backupeado)
  2. @new_database_name: Nome do banco de destino
  3. @log_qty: Quantos logs de transação devem ser restaurados depois do full. Coloque 0 para testar apenas o FULL.
  4. @data_destination_path: Local onde os arquivos de dados (.mdf, .ndf) serão restaurados.
  5. @log_destination_path: Local onde os arquivos de logs de transação (.ldf) serão restaurados.

Ainda tem muito mais a ser feito (e a minha ideia é manter esse script sempre atualizado – Veja o que já está programado nos comentário do script) e, para isso, eu conto com a sua ajuda amiga… Como? Simples… Baixe, aplique, teste e critique. Todo o feedback é válido e necessário. Só assim eu consigo melhorar, ajustar ou remover o que foi feito…

Interessou??? Então baixe o script!

O script, como sempre, está disponível para download gratuitamente e serve para uso comercial como não comercial.
Apenas peço para que os créditos sejam mantidos quando for utilizá-lo.

Para fazer qualquer solicitação, crítica, ou xingamentos, é muito fácil… Basta deixar um comentário e/ou enviar um e-mail para logan at merazzi dot eti dot br com o que quiser falar que você será extremamente bem recebido. 😉

Espero ter ajudado hoje.

[]’s!!

 

maio 24

Restaurando um banco apenas com o .mdf

Surgiu uma solicitação para eu restaurar um banco. Até aí, tudo ok, é um processo normal. RESTORE DATABASE Blábláblá, permissões dadas e assunto encerrado.
Ao ver o arquivo, havia apenas um .mdf. Ou seja, não é mais um restore, é um ATTACH. Seria outro processo normal também… Se existissem os arquivos de log (.ldf).

Ao tentar restaurar, o seguinte erro surgiu:

File activation failure. The physical file name “C:\Caminho\Original\do\banco\arquivo_log.LDF” may be incorrect.

The log cannot be rebuilt because there were open transactions/users when the database was shutdown, no checkpoint occurred to the database, or the database was read-only. This error could occur if the transaction log file was manually deleted or lost due to a hardware or environment failure.

Mas vamos lá, passo a passo, para vermos os problemas que podem aparecer e como resolver.

Leia mais »

nov 16

Acessando um banco MySQL pelo SQL Server via Linked Server

Surgiu uma demanda onde era necessário migrar algumas tabelas de alguns bancos em MySQL para dentro do SQL Server e tínhamos disponível apenas o backup (a.k.a. dump) dos bancos de origem.

Realizar o tratamento do arquivo (manualmente) para que fosse possível criar os bancos e inserir os dados estava fora de cogitação. Como temos uma VM com o Linux (Ubuntu) e com o MySQL instalado, optei por realizar a criação de um Linked Server entre os dois servidores. Leia mais »

nov 10

Tratamento de Exceções. Parte 2

Essa é a parte 2 de uma série de 3 posts (ou 4, quem sabe), onde eu quero falar sobre as formas de realizar o tratamento de exceções no SQL Server.

Se você caiu aqui por acaso, sugiro antes dar uma olhada na parte 1 da série, onde eu trato de alguns detalhes no que diz respeito à forma que o SQL Server realiza o encerramento de processos, nos casos de erro.

Hoje irei falar sobre como realizar o tratamento de exceções, via TRY / CATCH.

Leia mais »

Posts mais antigos «

%d blogueiros gostam disto: