The Log scan in database model is not valid


Um pouco da história antes….

Dia 08/12/2011 choveu muito aqui em sampa,,, tivemos problemas com a elétrica aqui no prédio, ocasionando diversas quedas de energia,,,

Tenho instalado no desktop um SQL Server 2008 R2 Express, onde tenho algumas bases para testes,, até ai nenhuma novidade,,,

Quando cheguei no dia seguinte (09/12/2011) percebi que um sistema que uso para testar algumas bases não estava funcionando,,, a mensagem era simples: “Não consigo acessar o SQL”

Tentei iniciar o serviço do SQL e, claro, não consegui,,, Acessei os eventos do sistema e achei a seguinte mensagem:

event model

Interessante,,, o transaction log do model foi corrompido… isso é legal…

Iniciei o SQL em modo de segurança e rodei um DBCC CHECKDB, não fez diferença…

Como a base Model não é uma das bases mais vitais do SQL e eu não tenho backup dela,,, fui no diretório de Templates e copiei a base de lá para o diretório onde estava a base de “produção”. Iniciei o SQL e ele carregou sem problemas….

templates

Lembrando que, não é porque existem outras bases de sistema por aqui que você pode sobre-escrever a Master ou a MSDB…

Aí vem uma pergunta,,, por que o SQL não subiu com a base em suspect ou offiline? ou qualquer outro aviso? simples… a base Model, por mais simples que seja serve como base para criar o TempDB,,, sem ela,, o SQL não consegue criar o mínimo para o TempDB… eu consegui iniciar o SQL em modo de segurança porque usei a traceflag 3609 onde ele não recriou o tempdb…

Quais planos de execução estão na memória?


Em sua maioria, a memória utilizada pelo SQL Server é utilizada para armazenar dados (buffer) e planos de execução (cache de procedure). Nesse post vou mostrar quanta memória está alocada para cache de procedures

O SQL Server armazena o cache usando 8kb por página de dados. Usando a dynamic view sys.dm_os_memory_cache_counters podemos ver um resumo do que está alocado:

SELECT TOP 6
LEFT([name], 20) as [NOME],
LEFT(]TYPE], 20) as [TIPO],
[single_pages_kb] + [multi_pages_kb] as [cache_kb],
[entries_count]
FROM sys.dm_os_memory_cache_counters
order by single_pages_kb + multi_pages_kb DESC

Vou focar nos 3 principais resultados dessa query:

  • CACHESTORE_OBJCP – Esse são planos compilados para stored procedures, triggers e functions
  • CACHESTORE_SQLCP – São os planos que não fazem parte de procedures, functions e triggers, inclui basicamente SQL dinâmico.
  • CACHESTORE_PHDR – Esse é responsável por verificar a sintaxe de views, constrains, também resolve o nome de tabelas e colunas

Você pode monitorar o numero de páginas no cache usando o Performance Monitor usando SQLServer:Plan Cache que armazena os contadores de Páginas de Cache. SQL Plans (CACHESTORE_SQLCP), Object Plans (CACHESTORE_OBJCP) e Bound Trees (CACHESTORE_PHDR).

Nos podemos ver individualmente as entradas no cache usando a dynamic view sys.dm_exec_cached_plans

SELECT usercounts, cacheobjtype, objtype, plan_handle
FROM sys.dm_exec_cached_plans

A query lista os planos de execução mais utilizados. Ela inclui os planos para stored procedures, adhoc ou SQL dinâmico, triggers, views. Se você quiser ver o SQL associado ao plano (que no final das contas é o que realmente queremos) será necessário usar o sys.dm_exec_sql_text:

SELECT TOP 100
objtype,
p.size_in_bytes
LEFT([sql].[text], 150) as [SQL]
from sys.dm_exec_cached_plans p
outer apply sys.dm_exec_sql_text (p.plan_handle) sql
order by usercount desc

SQLPASS – Keynote D2


08h10 – Hoje é o kilt day,,,,

08h18 – Hoje tem um monte de agradecimento para as pessoas que ajudam o evento a ser realizado

08h25 – O Pessoal apresentou um vídeo sobre as qualidades mais interessante para as pessoas sobre o sql,,, muitas das pessoas são de instituições bancárias,,,,

08h30 – O VP está falando sobre as novidades do SQL Server 2012, começou falando sobre as novidades de alta disponibilidade, que por sinal realmente é bem interessante

Agora o VP da MSC está falando sobre a utilização deles do SQL, comentando a necessidades deles de nunca poder parar de acessar os dados.

08h40 – O pessoal esta mostrando como configurar o modo Always-On do SQL 2012,,, isso é simplesmente muito bom,,,,

08h53 – Até que enfim alguém está fazendo exemplos sem usar Excel,,, e pra ajudar a mina vira e manda uma: “Da pra fazer pelo GUI, mas sou da velha guarda, então olhem o código aqui,,,”

09h00 – Agora vamos ver o appliance com SQL,,, um hardware tunado para rodar banco,,,, só banco,,,, e mais nada além de banco,,,, isso é um sonho? SQL Server Parallel Data warehouse,,,, agora não é só HP,,, a DELL também tem hardware pra isso,,, é uma pena que isso, se um dia chegar ao Brasil, vai ser muito caro,,,,

09h16 – Anuncio do driver de ODBC para linux,,,, já que tem um monte de gente desenvolvendo para linux, pelo menos acessem uma base decente sem usar a droga do jdbc,,,

09h30 – trouxemos a chuva para Seattle,,, afinal,,, muito SQL Azure  da nisso,,,,

09h40 – O pessoal anunciou que o SQL Azure vai aceitar bases até 150gb,,, e em qualquer collation,,, vamos ver se ele começa a fazer alguma sombra no Brasil,,,

SQLPASS – Chegamos no esquema


11/10/11 – Fizemos o checkin do evento,,, como começo a ficar de costume, nos meus brindes veio faltando alguma coisa,,, no voo foi o fone de ouvido,,, daqui foi a cordinha para o crachá.

12/10/11 – Chegamos no evento,,, um monte de gente,,, já na escada rolante escuramos alguns brasileiros,,,

08h13 – muita gente no salão para o keynote,,, esse pessoal é muito estranho,,, só sabem falar inglês,,, q coisa chata,,, uahuahauhauha e nada de começar….

08h17 – começa com um video de pessoas falando sobre o significado do evento,,,

08h19 – apareceu o presidente do SQLPASS (Rushabh Mehta),,, ele está falando sobre a comunidade,,, mostrando quem faz parte do border,,, ele disse que o twitter está acima da capacidade,,, alguém precisa dizer pra ele que o wireless daqui não está aguentando a quantidade de gente,,,

08h27 – 189 seções, 204 palestrantes,,, e muita gente,,, no folheto dentro da mala mostra onde estão as salas interessantes,,, e qual o nível do treinamento,,,,

08h36 – basicamente uma explicação do evento,,, até que foi legal…

08h37 – Agora o Sr. vice presidente de produtos MS, Ted Kummert,,,

08h39 – The New World of Data, Ted Kummert está falando sobre que a menina dos olhos é Cloud,,, até aí,,, qual a novidade?,,

08h42 – 400k horas, 79k membros, 300 mvps,,, é coisa de gente grande,,,,

08h45 – Ted Kummert, está falando sobre os 3 pilares do SQL Server Denali.

08h50 – Agora o SQL Server Denali tem um nome oficial,,, SQL Server 2012 (esse pessoal é muito criativo,,,) e pelo que ele disse vai ser lançado no começo do ano que vem (isso vai ser uma grande novidade)

08h57 – Vamos ter outra versão do Azure até o final do ano,,, com novos tipos de dados….

09h07 – Denny Lee está demonstrando algumas novas consultas usando como exemplo o excel…

09h13 – Agora tem um pouco de SQL Azure labs…. vamos ver que zona vai sair disso,,,

09h18 – Mais exemplos com excel,,,, nós já sabemos que podemos extrair muitos dados, gerar relatórios e fazer uma festa com o excel acessando SQL,,, mas poxa, não viemos até aqui pra brincar com Excel,,, quero ver SQL,,,

09h26 – Agora pra que estudar para BI? qualquer criança que conheça um pouquinho de excel vai conseguir fazer qualquer coisa com acesso aos dados,,, até que não é ruim,,, o problema é que essa liberdade para o usuário, que na maior parte das vezes toma piau pra conseguir mandar um email, pode gerar mais dificuldades do que facilidades… O usuário tem que aprender a saber o que quer antes de ter a liberdade de acessar o que ele quer,,,, sem treinamento isso pode se tornar mais em problema do que liberdade,,,

09h37 – Amir Nets faz umas apresentações muito boas…. as apresentações de BI dele são muito boas…

09h55 bem no final da apresentação do Amir Netz, o tablet não consegue conectar na internet,,, e para tora a apresentação,,, uhauhauhaua, vir em uma apresentação com produtos MS e ela não ter problema? não tem graça,,,

09h57 – fim do keynote,,, agora vamos ver as outras coisas,,,