Já tentou ler aquele log de erros do SQL SERVER quando o mesmo está cheio? Péssimo né?

É uma boa prática implementar um job que realiza a “reciclagem” do log de erros. Simplesmente através do comando abaixo:

exec master..sp_cycle_errorlog;
GO

Por que? Simples, seu log não fica tão cheio e fica mais facil de apagar os logs arquivados mais antigos para evitar potencial perda de espaço em disco – Sim, existem ataques que consistem em encher o log até estourar o espaço em disco.

Então, no seu ambiente, crie essa rotina, coloque este comando em um job para ser executado semanalmente ou diariamente, dependendo das suas configurações.

Executei o comando para reciclar o LOG de Erros….
errorlog_1

 

… E foi criado um novo Error log atual(Current):
errorlog_2

 

É isso pessoal, Happy SQLSERVING!

 

O procedimento de split ou stripping de Backup é particularmente interessante quando nos deparamos com dois problemas:

  • Depenho abaixo do esperado no momento de realização de backup de um banco por contenção de I/O;
  • Temos que disponibilizar o arquivo em algum caminho para cópia e um arquivo seria inviável pelo tamanho do mesmo.

Real World Case: Já passei por alguns casos onde este ajuste foi necessário, um cliente tinha uma base de cer

O único cuidado que devemos ter é: Você precisará de TODOS os arquivos gerados no backup para realizar o restore, tenha isso em mente.

Fazemos o split a partir do comando de backup, conforme abaixo:


 Backup database POMBO
 to disk = 'c:\emp\pombo_01.bak',
 disk = 'c:\emp\pombo_02.bak',
 disk = 'c:\emp\pombo_03.bak'
 with stats=5, compression
,copy_only --use esta opção se você não quer estragar a sua política atual de Backup!
;

 

 

Ficaria algo como na figura abaixo:

backup_stripped

 

É isso pessoal, espero ter ajudado!

 

Boa prática, tudo gira em torno de boas práticas.

Mas muita gente esquece delas quando passa por um momento de crise ou simplesmente não lê a docuementação do produto. Existem muitas razões para criarmos mais do que um arquivo de log de transações no SQL SERVER:

  • Existe uma transação gigantesca em execução e o disco onde está o LOG está com o espaço no final…
  • That’s it….

Sim, não existe outra razão, apenas nos salvar num momento onde a base não pode parar…. Isso porque a escrita no LDF é totalmente serial, ou seja, o SQL SERVER sempre vai usar apenas UM arquivo por vez, diferente de um possível balanceamento via Filegroups (procurem pelos posts do Paul Randall no google, em breve coloco eles como referência).

O que acontece é que muitas vezes resolvemos o incidente, mas não lembramos de fazer a limpeza posterior…. Devemos limpar a sujeira temporária, como ficará a imagem do DBA quando virem dois ou mais arquivos de LOG desnecessários?

First things first:

  • Você consegue remover os arquivos de log que tenham ID diferente de 2 ou seja, não são o inicial. Nem adianta procurar como remover o 2, não perca seu tempo!
  • Log de transações guarda adivinha, transações! Caso não esteja conseguindo remover um arquivo adicionado posteriormente, verifique as transações ativas na base (DBCC OPENTRAN) e veja porque não é possível truncar o log:
    select name, log_reuse_wait_desc
    from sys.databases;
    
  • Você pode precisar realizar um Backup de LOG (recovery em BULK LOOGED ou FULL) antes de remover o arquivo LDF. Por que? Você precisa garantir pro SQL SERVER que as informações que ele precisa para recuperar seus dados estão sã e salvas em local seguro, caso contrário ele não deixará você remover o mesmo.
  • Verifique o status de seus VLFs (Virtual Log Files) com o comando DBCC LOGINFO, caso algum VLF esteja com status 2 no fileid que você quer remover, esqueça, você precisa deixar ele sem uso (status 0) antes de prosseguir.

Aqui está o video com o passo a passo, enjoy!

Recuperação é um termo estranho, estamos tão acostumados com Backup/Restore ou Recovery que esquecemos do termo em português. Mas Recuperação nada mais é do que colocarmos no ar novamente dados que ficaram indisponíveis por qualquer razão.

Sim, é simples assim e mais complicado do que parece. Paradoxal não?

Estratégia de Backup/Restore, Recuperação envolve uma série de fatores.

Tudo se resume às questões:

  • Gosta do seu trabalho como DBA? Quer acessar a apinfo em breve?
  • Se gosta do seu atual trabalho, cabe a você expor os fatos e riscos para seu cliente e de maneira simples e direta convencê-lo que para ter menos perda de dados, seu dinheiro será bem investido.
  • Como DBA você assinou um contrato invisível e fictício de sempre fazer o possível (as vezes até o impossível) para recuperar os dados do seu cliente da melhor maneira possível!

Com os videos abaixo espero poder passar um pouco destas ferramentas para vocês.

Obrigado a todos e happy dbaying!

Parte 1, um pouco de teoria:

Parte 2, um pouco de prática:

Parte 3, um pouco mais de prática:

Fala pessoal, boa noite.

Subi mais um video no canal do youtube. Este é um video não tecnico que trata dos problemas que podem ocorrer quando não seguimos processos (biblioteca ITIL, por exemplo) e deixamos a proatividade (para não falar outra coisa) falar mais alto do que a vontade de… escrever… documentar…

Sim, ITIL pode ser chato, mas pode salvar um emprego!

Com certeza este video terá mais do que uma parte e haverão palestras a respeito do tema.

Espero que gostem…

Até a próxima!

 

Então pessoal, resolvi deixar o depoimento a respeito do curso de SQL SERVER Tuning que estou fazendo com a Sr. Nimbus.

Pra quem não sabe, a Sr Nimbus é A consultoria para treinamentos avançados de SQL SERVER no Brasil. Formada por alguns MVPs, possui cursos presenciais e online. Todos recomendadíssimos. A ideia dos cursos não é preparação para provas de certificação, para isso existem muitos CPLS – centros de treinamento parceiros Microsoft – a ideia é apresentar com detalhes o funcionamento dos mecanismos do SQL SERVER. Raro encontrar cursos nestes níveis para outras tecnologias.

O curso de Perf Tuning está sendo ministrado pelo MVP Fabiano Amorim e está em seu final, porém já é possível tirarmos algumas conclusões a respeito do curso:

  • Performance é um assunto complexo, nem se fossem 2 semanas daria tempo de falar tudo a respeito do assunto.
  • Se estiver fazendo esse curso, não olhe pro lado, você já perdeu a explicação sobre um operador do Relational Engine.
  • Este curso complementa o ( também indispensável) de Internals, ministrado pelo Luti.
  • Tive a sorte de estar em uma turma que tinha como aluno o Thiago Carlos Alencar – Que ministra cursos na Ká Solution e manda muito bem em Perf Tuning também.
  • Faça e refaça os exercícios e demos em casa, é a melhor maneira de aprender.
  • estude…

Enfim, é um curso essencial, necessário e que precisa ser feito por todo mundo que pretende conhecer um pouco mais sobre o otimizador de consultas do SQL SERVER. Vale o investimento.

Conclusão: Quanto mais estudamos tecnologia, mais vemos que precisamos estudar…

Abraços!

Marcelo

 

 

 

 

 

Fala pessoal, tudo bem?

Neste post vou apresentar uma série de videos que criei para ajudar vocês a criar do zero um cluster virtualizado.

O que utilizei:

  • Freenas 9.2;
  • VMware Workstation (9 ou 10);
  • Iso do Windows server 2008 R2 (sem piratear heim! ;-));
  • Iso do SQL SERVER 2008 R2 (mesma dica de cima!);

Estou testando o cluster em uma máquina física de 16 Gb de RAM e estou utilizando em torno de 150 Gb de espaço em disco. No caso estou usando um processador i7.

 

Espero que gostem e seja útil.

Parte 1 – Criação do storage:

Parte 2 – Criando o AD:

Parte 3.1: Instalando o Sistema Operacional dos servidores do cluster e gerando templates.

ps: Sim, eu dividi a parte 3 em duas, caso contrário os videos ficariam muito extensos.

Parte 3.2: Configurando o cluster no Windows:

Parte 4, final – instalando o SQL SERVER no Cluster:

É isso pessoal, espero que gostem e seja útil de alguma forma. Pelo menos para brincar!

Abraços!

Marcelo

 

Boa noite pessoal,

Recentemente passei um perrengue pois não conseguia acessar uma instância que nossa equipe administraria mas que não tinha acesso ainda pois tratava-se de um sistema legado.

Resumindo: Ninguém tinha ideia de qual era a senha do famoso e odiado ‘SA’. E ninguém do lado do cliente tinha acesso administrativo na instância em questão. As aplicações estavam funcionando (ainda e por sorte) em modo ‘piloto automático’.

Em comum acordo com o cliente, realizamos o seguinte procedimento:

1. Criamos um usuário local no Windows com privilégio de Administrador;
Screen Shot 2014-10-18 at 19.36.57

2. Acessamos o Windows a partir deste usuário;

3. Paramos a instância do SQL SERVER e de todos os outros serviços relacionados a esta;

4. Alteramos a configuração da instância para ser iniciada em modo SINGLE USER (-m);

 Screen Shot 2014-10-18 at 20.57.51

5. Alteramos a configuração de autenticação do serviço do SQL SERVER para o usuário criado no passo 1;

Screen Shot 2014-10-18 at 20.58.23

6. Conectamos à instância via SQLCMD e …

Screen Shot 2014-10-18 at 21.22.18

7. Adicionamos o usuário recém-criado como sysadmin da instância;

8. Saímos do SQLCMD, pois somos loucos por Windows, interface gráfica e SSMS! 🙂

9. Alteramos o serviço do SQL SERVER para Local System como estava anteriormente e retiramos o parâmetro -m da instância;

10. Reiniciamos o serviço do SQL SERVER e iniciamos os outros serviços relacionados a instância e …

Screen Shot 2014-10-18 at 21.25.49

11. Acessamos o SQL SERVER com sucesso a partir do SSMS com o nosso usuário recém-adicionado à role de SYSADMIN!

Screen Shot 2014-10-18 at 21.30.04

Ps:

  • Esta não é a melhor prática para se obter acesso à um SQL SERVER e fere vários protocolos e melhores práticas de segurança da informação – a melhor forma é ter a documentação do ambiente devidamente atualizada.
  • Tudo foi feito com consentimento do cliente, no caso, atual dono do sistema que herdou o servidor. Não tente fazer nada por ‘debaixo dos panos’, muito menos indisponibilizar suas bases de dados sem que ele fique sabendo!
  • No passo 7 utilizamos a procedure sp_addsrvrolemember para adicionarmos nosso LOGIN ao grupo de sysadmin pois realizamos este procedimento em um SQL SERVER 2008 R2. No entanto, este comando está marcado para entrar em desuso. O ideal é utilizar o ALTER SERVER ROLE (compatível com SQL SERVER 2012+).

É isso pessoal, espero que ajude vocês caso tenham algum problema e até a próxima!

UPDATE: Se nada disso funcionar, tente inicar o SQL SERVER a partir de um prompt de comando com o parametro -m”SQLCMD” e a partir de outro prompt tente executar o SQLCMD.

Fontes de referencia:

Abaixo o vídeo com o passo a passo realizado:

Fala galera,

Há algum tempo o Adam Machanic e o Jonathan Kehayias postaram scripts que ajudam a “inchar” as bases de dados AdventureWorks do SQL SERVER, para conseguirmos fazer testes mais reais em cima de um WORKLOAD mais “plausível”.

Para os SQLGeeks de plantão:

https://www.sqlskills.com/blogs/jonathan/enlarging-the-adventureworks-sample-databases/

http://sqlblog.com/blogs/adam_machanic/archive/2011/10/17/thinking-big-adventure.aspx

 

Para baixar as bases de exemplo iniciais:

http://msftdbprodsamples.codeplex.com/

Enjoy! 😉