Arquivos Mensais:julho 2011

Mais uma certificação e agradecimentos

E aee galera, como podem ter visto ontem no twitter consegui mais uma certificação de SQL Server e dessa vez foi a de Database Administrator (MCTS). Resolvi fazer esse post para dar os devidos agradecimentos as pessoas que me ajudaram até aqui e que com certeza irão me ajudar ainda.

Minha historia com o SQL Server começou a uns 2 anos atras quando eu precisava criar uma simples bat no SQL Server Express para fazer um backup, lembro que parecia ser a pior das tarefas do mundo encontrar como executar um backup no SQL Server via linha de comando, até esse momento eu ainda nao tinha rumo certo na minha carreira profissional, o mais engraçado foi que de um simples problema parece que eu tinha acabado de encontrar a chave para o meu futuro. Daquele dia em diante tudo o que eu queria fazer era ficar o dia inteiro mechendo no SQL Server. Naquele momento eu precisava de livros, encontrei um cara no orkut (desculpa, mas só conhecia orkut naquela epoca) que tinha os dois livros do MOC do SQL Server 2005 para doar, lembro que por aqueles dois livros paguei 20 reais e que dinheiro bem empregado.

Leia o resto deste post

Dica do Dia: Reciclando o ERRORLOG

Pessoal,

Hoje estou postando apenas uma dica. Como vocês sabem o ERRORLOG do SQL Server vai crescendo a medida que as informações são inseridas e sendo assim o arquivo de log somente é reiniciado quando a instancia do SQL Server é reiniciada, então como é a ordem natural das coisas o serviço do SQL Server dificilmente é reiniciado fazendo com que o ERRORLOG cresça e cresça cada vez mais impossibilitando muitas vezes a leitura do mesmo.

O SQL Server então possui uma stored procedure que faz essa reclicagem do ERRORLOG sem necessitar reiniciar a instancia. Segue o comando abaixo.

use master
go
xp_readerrorlog
go

agora vamos executar o comando para reclicar o log.

use master
go
exec sp_cycle_errorlog
go
exec xp_readerrorlog

Conforme a imagem abaixo o ERRORLOG foi recriado.

Como podemos ver na imagem abaixo tinhamos o arquivo ERRORLOG de 14KB  que apos executarmos a stored procedure, foi criado um novo arquivo ERRORLOG e o antigo foi renomeado para ERRORLOG.1.

Bom pessoal, por hoje é isso espero que tenham gostado dessa dica.

Marcos Freccia
@SQLFreccia
MCTS SQL Server 2008

Auto Close vs Data Cache

Ola Pessoal,

Acho que a maioria dos DBA’s conhece essa opção do Auto Close, e também sabem o quanto nós não gostamos dessa função.

De acordo com o BOL o Auto Close faz com que após o ultimo usuario se desconecte da base de dados ele libera todos os locks presentes na mesmo, ou seja, agora você consegue pegar o arquivo .mdf e fazer o que voce quizer seja copiar, mover ou até mesmo excluir.

Mas o que essa opção influencia no Data Cache? Bom meu amigo, ela tem total interferencia, pois sendo que após o ultimo usuario se desconectar todos os locks são liberados e com isso todo vestigio de presença desse banco de dados no Buffer Cache do SQL Server é eliminado, então todas as paginas de dados que estavam presentes lá no Data Cache serão escritas novamente no disco. Agora você imagina isso em um banco altamente transacional recebendo milhares de requisições por segundo, quando o ultimo carinha se desconectar a morte começa a pairar sobre o seu banco de dados.

Leia o resto deste post

Chamada para SQL Interview

Pessoal,

Pensando na vida esses dias, tive uma pequena ideia de fazer uma especie de mini-entrevista com o pessoal da comunidade e principalmente com o pessoal de SQL Server, apenas para conhecermos mais com quem conversamos no twitter ou pedimos ajuda nos foruns ou por e-mail, mas nao conhecemos o que fazem e o que nao fazem. Contei essa ideia para a Andressa Martins (Twitter|Blog) que achou interessante e vamos tentar colocar em pratica.

Vamos tentar fazer uma vez por semana e de preferencia toda sexta-feira, mas para que isso aconteça nas sextas sera necessario algumas coisas.

1) Fiz uma tabela aqui no SQL Server onde coloco os nomes e twitters de todas as pessoas que eu sigo aqui do Brasil claro. Se eu esqueci de alguem me avisa. Nessa tabela vamos rodar um script que vai pegar as pessoas que ainda nao foram digamos “Entrevistadas”.

2) Preciso então dos e-mails de voces para que eu possa enviar o questionario para que vocês respondam.

3) A questão aqui é fazer com que voces sejam pegos de supresa recebendo o meu e-mail para responder essas perguntas.

4) Para me enviarem seus respectivos e-mails voces podem enviar um e-mail para esse endereço: marcosfreccia at hotmail dot com. Nao se esqueçam de colocar no assunto do e-mail o nome desse post: Chamada para SQL Interview.

Pessoal é isso ai, espero que tenham gostado dessa ideia e que me enviem seus e-mails para podermos dar continuidade a essa ideia.

Marcos Freccia
MCTS SQL Server 2008

SQL 201-Ranking Functions

It’s been a while since I’ve covered a SQL 201 topic!  I want to jump back into it with ranking functions.  These are functions that let you represent orders in your data.  When you were in school I’m sure you had to take standardized tests.  When you did you were given a percentile score.  This score represented how you performed compared to all students in your sample.  This sample group was everyone in your grade level.  So if you were taking the end of course exams for 11th grade, you were compared with every other student in the 11th grade.

Percentile is just one of the four ranking functions you have available in SQL 2008 R2.  I’m going to go over how and when you would use these in the real world.  Let’s start with the easy stuff.

Leia o resto deste post

SQL Server Denali: dm_db_log_space_usage

Ola Pessoal,

Como voces sabem na semana passada foi lançado a versão CTP 3 do SQL Server Denali. Para saber mais sugiro ler o post do Felipe Ferreira (Blog,Twitter). Entao a medida que eu for estudando sobre o Denali vou postando para vocês novas funções e possibilidades de analise de informações.
Nesse primeiro post vou mostrar algo que achei interessante. Você ja conhece o comando DBCC SQLPERF(LOGSPACE) onde te mostra o tamanho do log em MB e o espaço ja utilizado em % de todas as bases da instancia. No SQL Server Denali surgiu entao uma DMV chamada sys.dm_db_log_space_usage onde te mostra a mesma informação só que para a base que voce selecionou.

Vamos analisar essa DMV.

Campos: database_id, total_log_size_in_bytes, used_log_space_in_bytes, used_log_space_in_percent

Como voces podem ver, foi acrescentado um campo a mais nessa DMV e ao contrario do comando DBCC essa DMV traz o resultado em bytes e nao em MB.

Para deixar mais claro então o resultado obtido vamos executar a seguinte consulta.

select db_name(database_id) as DatabaseName, round((total_log_size_in_bytes /1024),0) / 1024 as TamanhoTotalMB,
round((used_log_space_in_bytes / 1024),0) 1024 as EspacoUtilizadoMB, round(used_log_space_in_percent,0) as PercentualUtilizado from sys.dm_db_log_space_usage

Abaixo então o resultado dessa nossa consulta.

Por hoje é isso, espero que tenham gostado.

Marcos Freccia
@SQLFreccia
MCTS SQL Server 2008

The ReportServerVirtualDirectory element is missing

Pessoal,

Esse erro acontece quando tentamos acessar o diretorio \Reports no Browser, assim não aparecia a pagina principal mas sim uma tela com esse erro. Como resolver isso?

A dica é bem simples, basta você ir no diretorio diretorio onde está instalado o Reporting Services e acessar a seguinte pasta: Reporting Services\ReportManager.  Dentro dessa pasta existe um arquivo chamado RSWebApplication.config como vocês podem ver na figura abaixo.

Imagem1

Dentro desse arquivo existe a tag <ReportServerVirtualDirectory></ReportServerVirtualDirectory>. Se você encontrar essa tag vazia ai está o problema, basta você adicionar o valor ReportServer, salvar o valor e por via das duvidas reinicie o serviço do Reporting Services.

Importante: Essa dica vale para o SQL Server 2005, no SQL Server 2008 você deve voltar uma pasta e entrar na pasta ReportServer e acessar o arquivo rsreportserver.config que a mesma propriedade estará contida nesse arquivo também.

Imagem2

Pessoal espero que vocês tenham gostado dessa dica.

Marcos Freccia
@SQLFreccia
MCTS SQL Server 2008

T-SQL Tuesday #20 – T-SQL Best Practices

Hi Guys,

This month the subject for T-SQL Tuesday is “T-SQL Best Practices” chosen by Amit Banerjee (Twitter|Blog) . I will describe here a problem that happened some days ago in a customer, and just changing a little thing in the query made all the difference.

The customer told me that some queries have been running slowly, so my job there, was dig further and find what have been wrong.

I found out that all of these queries have been using “convert implicit” and none of indexes have been used. And just put the value of where clause in quotes the index began to be used. I’ll put some some code below to illustrate the example.

create table #temp ( id int not null, idVendor varchar(100))

go

alter table #temp add constraint PK primary key (id)

go

insert into #temp (id,idVendor)

values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6)

go

create nonclustered index ix_teste on #temp(idVendor)

go

select idVendor from #temp

where idVendor = 1

Executing the query we have the execution plan below.

Image1 Image2

As we can see, the nonclustered index didn’t solve my problem because a convert_implict was made to satisfy the query.

To solve this query just put the value of idVendor between quotes like this:

select idVendor from #temp

where idVendor = ‘1’

and we have the follow execution plan:

Image3 Image4

So, just doing a T-SQL best practice we avoided a convert_implicit and an index scan for the query.

Conectando no SQL Azure através do Management Studio

Olá Pessoal,

Para complementar o post Criando uma base de dados no Windows Azure, vou colocar então como realizar a conexão no SQL Azure através do Management Studio.

Para realizar a conexão você deve executar os seguintes passos.

Leia o resto deste post

Criando uma base de dados no Windows Azure

Olá Pessoal,

Hoje vamos atacar de SQL Azure, quem ainda não sabe o que é corre, pois vocês estão parando no tempo. Esse post de hoje trata-se simplesmente de como criar uma simples base de dados do SQL Azure dentro da plataforma Windows Azure.

Não vou mostrar aqui como criar uma conta no Azure, pois acredito que o MVP Lucas Romão (Blog|Twitter) já deve ter mostrado como.

Leia o resto deste post