You are currently browsing the tag archive for the ‘SQL’ tag.


Desculpem ter deixado o titulo em maiúsculo, se desse ainda faria em NEGRITO.

Na empresa que trabalho sou responsável por entrevistar os candidatos.  E 9 a cada 10 DBAs me falam que TRUNCATE TABLE não gera log, que não dá para fazer ROLLBACK

Mas é CLARO que o SQL salva log, e se der algum problema e você usou BEGIN TRAN ele vai voltar. o TRUNCATE não armazena tanta informação como um DELETE, mas ele armazena quais paginas estão sendo desalocadas

Exemplo abaixo

Leia o resto deste post »


Seguem algumas dicas e coisas novas ou não tão usuais que aprendi no primeiro dia do 24h PASS, são mais direcionadas aos DBAs, mas também serve aos desenvolvedores e curiosos

  • Para mim sempre foi uma verdade que o VARCHAR(MAX) era igual ao TEXT, porém eu estava enganado e o varchar(MAX) fica na linha de dados, e não são apenas ponteiros para informações que estão em outro lugar, então ao se utilizar em um campo como [observação], que vc muitas vezes nem vai utilizar nas consultas ele gera alto IO.

Solução e mais informações: “In-Row Datahttp://msdn.microsoft.com/en-us/library/ms189087(v=sql.105).aspx

  • FILLFACTOR mesmo em OLTP não existe o padrão de colocar 80%

Pagesplits vão ocorrer e isso é normal, e para consultas seu sistema vai ficar muito mais lerdo

Considere um sistema de 50GB, que cresça 500MB por semana, os 20% do FILLFACTOR representam 10GB de espaço perdido que consomem IO / memória etc

Se você faz o rebuild semanal, para que está deixando 10GB livres toda semana.

  •  REBUILD de índices. Considere um índice grande, ex tabela de pedidos, porém os dados inseridos / alterados só ocorrem nos últimos 2 meses, mas vc tem 5 anos de pedidos

Se vc for fazer a lógica de fazer rebuild dos índices com fragmentação de 30% você nunca vai rebuildar este índice porque a média de fragmentação será baixissima. Então repense suas lógicas de rebuild

Links uteis

Um modo de você saber se seu índices está parcialmente fragmentado é usar FILTERED INDEX http://msdn.microsoft.com/en-us/library/cc280372.aspx

  • INSERTs em tabelas com IDENTITY podem ser acabar sofrendo em performance, pois como ele sempre insere na última página, esta página pode acabar ficando bem concorrido

Tem um whitepaper bem legal sobre isso:

Diagnosing and Resolving Latch Contention on SQL Serverhttp://www.microsoft.com/en-us/download/details.aspx?id=26665


Depois de muito escolher e pensar cheguei na minha agenda para o evento PASS 2011 (Seattle)
Estarei voando no sábado para lá, espero conseguir postar algo de lá

Parece que os KeyNotes terão streaming, será as 12:15 (-3 BR)

PASS Summit Day One Keynote – Ted Kummert and Rushabh Mehta

PASS 2011

Ainda tive de deixar algumas sessões na manga, vai que acontece algo eu corro para outra 🙂


Hoje fui aprovado em mais uma certificação a primeira da carreira de DEV (MCTS – 70-433), já tenho as 2 de ADM (MCTS e MITP) e as 2 de BI (MCTS e MITP).

Estas 2 ultimas linhas (ADM e BI) praticamente não estudei, fui com o meu conhecimento do dia-a-dia, pois estava atuando diretamente com elas. No caso de DEV não estava atuando diretamente o que me fez ter de estudar e rever alguns conhecimentos.

Sempre que alguém falava da prova de DEV sempre falava “a parte de XML é muito difícil”, estudei tanto isso que a parte de XML acertei todas 😛 alguns outros pontos acabei ficando com dúvida.

Em breve coloco um post sobre tudo que estudei sobre XML, por enquanto fica em anexo o guia de certificação para quem esta interessado no assunto

SQLServer2008_CertPath_Complete


Mais uma que não conhecia, sempre temos algo para aprender 🙂

O GROUP BY ALL mostra a soma dos valores “ZERADOS” desconsiderando o filtro do WHERE

SELECT collation_name as COLLATION, COUNT(*) as [COUNT]
FROM sys.databases
WHERE collation_name = 'SQL_Latin1_General_CP1_CI_AS'
GROUP BY ALL collation_name

COLLATION                    COUNT
---------------------------- -----------
Latin1_General_CI_AS         0
Latin1_General_CI_AS_KS_WS   0
SQL_Latin1_General_CP1_CI_AS 5

(3 row(s) affected)

Hoje estava estudando para certificação 70-433 descobri algo que desconhecia até então, é possivel fazer uma soma “SUM”, média “AVG”, etc sobre um conjunto ou subconjunto de registros… Melhor ver na pratica…

SELECT
	[database_id]
	,[name]
	,[compatibility_level]
	,COUNT(*) OVER() as [QTD_TOTAL_DATABASES]
	,COUNT(*) OVER(partition by [compatibility_level]) as [QTD_TOTAL_DATABASES_DO_MESMO_COMPLEVEL]
FROM SYS.databases
ORDER BY [database_id]




REF: http://msdn.microsoft.com/en-us/library/ms189461.aspx

Acabei de receber a confirmação, vamos ver se dessa vez consigo postar alguma coisa dos eventos


Ola pessoal, faz algum tempo que não escrevo nada, como falei no inicio do blog, não tenho muita paciencia para escrever 😛

Mas recentemente tive uma experiência e gostaria de compartilhar com vocês. Apesar de não ser especialista em ORACLE (Na verdade eu odeio ORACLE), mas como DBA SQL Server, muitas vezes necessitamos fazer um extração de dados do ORACLE para o SQL Server, ou criar um linked server. Sempre tive problemas com a instalação do client do ORACLE, mas desta vez encontrei um site que traz um guia detalhado da instalação. Segue abaixo as dicas:
Leia o resto deste post »