Thiago's profileThiago CasertaPhotosBlogListsMore Tools Help

Thiago Caserta

Thiago Caserta

Occupation
Location
Interests
Graduando em Análise de Sistemas, formado em Sistemas de Informação, MCTS SQL Server 2005, MCITP Database Administrator, MCT. Trabalha atualmente como DBA SQL Server na IBM. É grande contribuinte da comunidade Microsoft com foco em SQL Server
Public folders
May 20

Tech-Ed Brasil 2009 confirmado!

É isso pessoal, o Tech-Ed Brasil 2009 está confirmado e acontecerá nos dias Dias 25, 26 e 27 de Agosto de 2009 em São Paulo.

As únicas informações divulgadas por enquanto foram essas, mas em breve a Microsoft irá divulgar maiores informações quanto ao local, valores, etc, pelo site oficial do evento: http://www.teched.com.br/.

[ ]s.
May 07

Trabalhando com bancos de dados em suspect mode

Um dos problemas mais comuns para os administradores de banco de dados está relacionados com o suspect mode, ou "aportuguesando", modo suspeito.

Como o próprio nome já diz, quando o SQL Server altera algum banco de dados para este modo, algo suspeito está ocorrendo. Um log file corrompido, um arquivo com nome diferente do que deveria ser, uma página de dado inconsistente, muitos são os motivos para o SQL Server dizer que um banco é suspeito. Neste pequeno artigo não iremos discutir as causas em si, apenas possíveis soluções as quais poderíamos aplicar e que de fato utilizei no decorrer da minha carreira como DBA, cabe a você analisar a causa do problema para saber qual a solução mais adequada ao seu caso.

Já vi diversas pessoas tentando resolver este tipo de problema por alterar o id do status do banco de dados,  mas será que isso funciona?
Bem, vamos aos fatos.

Quando um banco fica em estado suspect , o SQL Server realmente atribui um valor na coluna status do database em questão e, esta informação pode ser consultada na tabela sysfiles do system database master, porém não podemos afirmar que o mesmo é um número fixo, pois o SQL Server atribuí este valor aleatoriamente. Além disso, o SQL Server não é tão facilmente burlado, portanto apenas alterar o status do database pode não resolver o problema.

Acredito fortemente que pessoas que dizem que o problema foi resolvido dessa forma, reiniciaram o serviço do engine logo após alterarem o status e, aí sim o problema foi solucionado. De fato, acreditem, até mesmo um restart service pode resolver um problema de suspect  database, dependendo do motivo pelo qual o SQL Server alterou o database para suspect mode.

Bem, voltando ao assunto que de fato julgo complexo e muito interessante.

Existem outras situações em que é possível resolver este problema apenas utilizando o comando.

DBCC DBRECOVER

(Database_Name, ignoreerrors)

Comando este que força a reestruturação do banco. Por exemplo, caso o banco não possua algum file necessário, por meio deste DBCC, não documentado, o SQL Server reporta o problema na guia messages e força a criação do arquivo instantanemente.

Além desta opção, caso o problema esteja relacionado com um log file corrompido, por exemplo, você poderia colocar o banco de dados em status de Emergency por fazer um update na system table sysdatabases do banco master, alterando o status do banco em questão para 32768 (Emergency Status), como estou fazendo abaixo.

-- Permitindo update em catalogos de sistema

EXEC sp_configure 'allow updates', 1
RECONFIGURE WITH OVERRIDE
GO

-- Atualizando o status do banco para Emergency mode

UPDATE sysdatabases SET status = 32768 WHERE name='Database_Name'
GO

E após isso, você poderia forçar o rebuild do LOG com o comando DBCC REBUILD_LOG(

'Database_Name','Caminho\Log_Name.ldf')

Outro comumente usada solução é o simples RESTORE database, que na minha opinião é a melhor solução para bancos com um tamanho não tão grande a ponto de demorar horas e horas para fazer o full restore.

Algo que precisamos nos atentar é que caso qualquer solução aplicada tenha realmente dado certo, poderemos certificar de que o banco não esteja de alguma forma "danificado", rodando o comando DBCC CHECKDB.

Caso algum erro seja reportado, podemos ainda reparar as inconsistências executando um REPAIR_FAST, como vocês podem ver no comando abaixo:

EXEC sp_dboption

'dbo use only', false

GO

EXEC sp_dboption

'single user', true

GO

DBCC CHECKDB

('
Database_Name', REPAIR_FAST)

Se ainda algum erro for acusado pelo SQL, o REPAIR_ALLOW_DATA_LOSS poderá complementar a reparação das inconsistências.

DBCC CHECKDB(

'Database_Name', REPAIR_ALLOW_DATA_LOSS)

Para este tipo de reparação é obrigatório o DB estar em single user, sendo que podemos colocá-lo em modo operacional novamente executando a SP sp_dboption com a opção false

EXEC

sp_dboption 'single user', false

Caso, de fato seja necessário utilizar o REPAIR, tenha em mente que dados poderão ser perdido, portanto utilize-o de forma consciente.

Outras soluções de fato poderão ser aplicadas e, como mencionado anteriomente, cabe ao DBA analisar a causa do problema para aplicar a solução correta.
De qualquer forma, espero que tenham aprendido algumas possiveis soluções para este tipo de problema.

Grande abraço a todos.
April 23

Dicas para o exame 70-431 (MCTS: SQL Server 2005)

Recebi diversos e-mails de pessoas que irão fazer a prova 70-431, a qual garante o título de MCTS em SQL Server 2005, com muitas dúvidas do que estudar.
Bem, segue então algumas dicas para este exame.
 
Primeiramente, como principal ponto a se dar atencão, analize se o seu inglês está num nível relativamente bom, caso contrário trabalhe em cima disso. Além de a prova originalmente ser em inglês, os melhores materias são de fora. Além disso, como dica pessoal, relembrando o que meu colega Gustavo Maia disse certa vez: "inglês em informática é mais importante até que SQL Server".

Voltando à prova em si, como sabemos a Microsoft exige certo sigilo com respeito ao número de questões, bem como as possíveis perguntas que poderão cair, além disso todos esses fatores podem variar de exame para exame.
Como guia principal de estudo, o livro MCTS Self–Paced Training Kit (Exam 70–431): Implementing and Maintaining Microsoft SQL Server 2005 pode ser considerado mais que suficiente. Este livro, desenvolvido pela Solid Quality Learning abrange os principais assuntos da prova, tais como:

  • Instalação e Configuração do SQL Server;
  • Criação de tabelas e índices, definição de colunas e implementação de constraints;
  • Implementação de functions, stored procedures, e triggers utilizando Transact-SQL;
  • Trabalhando com dados XML;
  • Monitoração, resolução e Tunning de queries;
  • Trabalhando com database availability utilizando log shipping, database mirroring, e replication;
  • Preparação de estratégia de backup e restore de um database.


    Obviamente outros assuntos poderão ser estudados, não só para dar maior confiança para o dia do exame, mas também para aumentar o conhecimento do candidato.
Outras formas de estudo, podem envolver:
  • Transcender (Possui questões mais difíceis que a prova, na minha opinião);
  • MOCs, principalmente dos cursos 2779 e 2780.
A prova 70-431 não possui apenas questões alternativas, como a maioria das provas de certificação Microsoft possui, mas também algumas simulações de situações rotineiras na vida de um DBA, portanto simule algumas situações comuns, tais como Backup/Restore, Criação de Linked Servers, Alterações nas configurações em nível servidor, etc, no próprio SQL Server Management Studio.
Existem muitas threads sobre esse exame e outros relacionados à carreira 2005 nos fóruns oficiais de SQL Server do MSDN. Talvez uma pesquisa em cima desta prova retorne mais dicas de outros membros da comunidade que já prestaram este exame.
Como dicas finais, descanse bem no dia anterior à prova e evite ansiedade desnecessária para o dia do exame.
A 431 não é um bixo de sete cabeças, muito pelo contrário, é uma prova bem tranquila e com estudo diligente é relativamente fácil alcançar um score alto.

Espero que as dicas sejam úteis para aqueles que irão prestar este exame em breve.
 
Obrigado.

Abraços,
Thiago Caserta.
April 16

Voltando à rotina

Caros amigos,

Depois de ficar afastado por mais um pouquinho do meu blog e também da comunidade SQL Server em geral, volto com boas notícias.

Primeiramente gostaria de explicar que meu "afastamento" da comunidade se deu devido as minhas incansáveis noites estudando para as provas finais da carreira 2005.

Obviamente não quis parar por aí e solicitei meu MCT junto à Microsoft Partner do meu grande amigo Roberto Fonseca. Duas semanas atrás recebi a confirmação da minha aplicação ao programa e já tenho turmas agendadas em uma conceituada Learning Solutions de Campinas na qual diversos amigos também dão aulas.

Por isso, agora como MCITP e MCT, posso dizer, com toda certeza, que todo o esforço valeu a pena.

Peço desculpas à todos da comunidade visto eu ter me ausentado por um tempo, mas prometo que apesar de eu ainda estar estudando para as próximas provas (do 2008), estarei mais presente na comunidade.

Gostaria também de aproveitar a oportunidade e agradecer à todos que contribuiram direta e indiretamente para o alcance desses dois objetivos e, como diz um certo ditado popular, muito sábio por sinal: "Vamos que Vamos!". hehe

Grande abraço a todos,

Thiago Caserta.

 

Microsoft SQL Server 2008