Archive for the 'SQL Server' Category

Fazendo um HealthCkeck do SQL Server rapidamente

É comum termos que fazer uma verificação de ambiente em uma instância SQL Server, o problema é que isso pode demorar bastante tempo e tempo é algo que nem sempre temos disponível.

Hoje estava dando uma olhada em uma newsletter e vi algo interessante a respeito e aproveitei para compartilhar com vocês. 

O Pessoal do Brent Ozar montou uma stored procedure bastante útil chamada sp_Blitz, através desta Stored Procedure é possível verificar diversos ítens de uma instância de forma muito rápida, entre estes ítens estão:

  • Backups
  • Permissões
  • Ítens de desempenho
  • Configurações

Todos estes ítens são verificados rapidamente e descritos de forma agrupada no resultset apresentado ao final da execução deste procedimento.

No vídeo abaixo é realizada uma explicação com maiores detalhes ilustrando a execução e os resultados.

Para realizar a cópia do código da stored procedure e obter mais detalhes acesse o artigo disponível em: http://www.brentozar.com/blitz/

É isso aí, espero que esta dica seja útil a vocês assim como foi pra mim.

Ass: Giuliano B. Cardoso

Anúncios

Tabelas temporárias vs variáveis do tipo tabela

Há um tempo atrás pensei em fazer um artigo a respeito do uso destes dois recursos, a idéia era abordar o uso destes e algumas considerações sobre performance.  Hoje estava dando uma olhada no MSSQL Tips e vi um artigo bem interessante do Ben Snaidero abordando exatamente este assunto.

A forma abordada no artigo é excelente, ele faz alguns testes com tabelas e variáveis com pouco registros e os mesmos testes em tabelas e variáveis com mais registros (1 milhão) e a conclusão é bastante próxima do que já tenho observado;  Para poucos registros a maioria das tarefas são executadas com melhor desempenho em variáveis do tipo tabela, mas quando se trata de grandes quantidades de registros uma tabela temporária conta com a possibilidade de usar índices e neste caso o uso de índices torna esta ultima mais eficaz do ponto de vista de desempenho para a maioria das operações.

Segue o link para acesso ao artigo, vale a pena conferir:

SQL Server Temp Table vs Table Variable Performance Testing

Até a próxima pessoal!

Ass: Giuliano B. Cardoso

Segurança em bancos de dados–Artigo SQL Magazine

Galera,

Acaba de sair na SQL Magazine edição 103 o artigo que escrevi sobre a aplicação de normas e procedimentos para garantir a segurança em bancos de dados.

image

Somente para aguçar um pouco a curiosidade de vocês, neste artigo comentamos sobre algumas coisas bem interessante “extra e intra” SQL, como:

– Uso das normas ISO

–  Análise de riscos

–  Ferramentas para auditoria

Estes são alguns dos assuntos abordados, há muito mais, espero que gostem.

Este artigo foi fruto de um trabalho conjunto com o Ricardo Moraes a quem quero aproveitar a oportunidade para agradecer a contribuição.

Neste link vocês podem ver uma prévia do artigo: http://www.devmedia.com.br/seguranca-em-bancos-de-dados-aplicando-normas-e-procedimentos-revista-sql-magazine-103/25669

Abraços e até o próximo post.

Estressando o SQL Server

Por vezes precisamos saber a capacidade do nosso sistema, para isso precisamos estressar o ambiente para saber o seu limite de funcionamento. É normal neste momento procurarmos alguns “robôs” que consigam disparar cargas automáticas contra nosso servidor, existem algumas ferramentas que podem nos apoiar nisso, mas nem sempre conseguimos extrair destas ferramentas tudo que precisamos, uma vez que nossos testes podem ter focos específicos; stress de processador, memória, disco ou contadores internos do banco de dados.

Neste post irei apresentar a vocês algumas ferramentas que tenho utilizado para fazer test de stress em servidores SQL Server, bem como montar um teste de stress de forma manual sem o uso destas ferramentas.

SQL Load Generator

Lançada em 2008, esta ferramenta é bastante simples, ela possibilita a execução de multiplas queryes e a simulação de diversas conexões simultâneas.

A figura abaixo apresenta a tela bem simples e intuitiva desta ferramenta.

O SQL Load Generator está disponível para download gratuíto no Codeplex, acesse: http://sqlloadgenerator.codeplex.com/

SQLQueryStress

Desenvolvida por Adam Machanic é uma outra ferramenta interessante, pois além de simular diversas conexões simultâneas também possibilita o uso de execuções dinâmicas de queryes baseadas em parâmetros. Outro ponto positivo é que a própria ferramenta já apresenta alguns contadores básicos de duração da execução, quantidade de execuções, utilização de CPU  entre outros.

O conjunto de telas abaixo ilustra a utilização da procedure “UspGetEmployeeManagers” onde devemos passar como parâmetro o Business EntityID, estes valores são obtidos a partir da tabela Employee no schema HumanResources, para isso clicamos no botão “Parameter Substitution” e inserimos a query para buscar os valores na tabela citada. Além da parametrização das execuções outro ponto a ser observado nas telas abaixo é a quantidade de execuções por conexão ou seja 5 execuções x 5 Conexões = 25 Interações.

image

image

image

Embora esta ferramenta seja meio antiga 2006, ainda continua sendo bastante útil para geração de cargas dinâmicas de queryes.

O download é gratuíto e está disponível em: http://www.datamanipulation.net/sqlquerystress/sqlquerystressdownload.asp

SQLStress

Esta também é uma boa alternativa, neste caso não precisamos definir as queryes, pois a carga de trabalho é gerada automáticamente. Nós podemos escolher o tipo de carga baseado em operações como Delete, Insert, Update e Select traçando um perfil de operação da base de dados. Isto se torna vantajoso quando não temos uma base de dados e queremos fazer um Sizing de hardware baseado na expectativa de carga de trabalho por operações e número de usuários.

A figura abaixo representa a tela onde podemos definir os parâmetros comentados e criar uma carga de trabalho com base nestes.

image

Outro destaque interessante desta ferramenta é a possiblidade de parametrizar o uso do NUMA (aba Affinity) , alem de preparar a base de dados criada para cada ciclo de testes, realizando limpeza de cache, checkpoints entre outras opções (aba Databases).

O download desta ferramenta também é gratuíto e está disponível em: http://www.sqlstress.com/Download.aspx

Fazendo de forma manual

Nem sempre temos a autorização de instalar estas ferramentas em nosso ambiente (ou no ambiente do cliente), nestes casos precisamos fazer um trabalho semelhante ao que estas ferramentas fazem, neste caso a nossa tarefa pode se tornar bem trabalhosa.

A primeira etapa para fazer estes testes de forma manual é a possibilidade de simular diversas conexões, a seguir apresento um script simplificado para esta tarefa.

Abrindo diversas conexões

Você pode criar um batch utilizando os parâmetros a seguir para abrir diversas conexões (instâncias) e com base em scripts sql (que deverão ser montados conforme sua necessidade) estas sessões serão disparadas contra o servidor definido, conforme os parâmetros da chamada do executável de linha de comando sqlcmd.

Veja abaixo um exemplo para a criação deste batch:

ECHO OFF
REM Inicia 100 instancias de um mesmo processo
for /l %%X in (1,1,100) do (start sqlcmd -S%1 -U%2 -P%3 -i%4 –o Log_%%XX.out)

Caso queira aumentar ou diminuir o número de conexões, altere o parâmetro 100 entre os parênteses (1,1,100). Além disso, você poderá personalizar os outros parâmetros embutidos na instrução do executável sqlcmd.

Para maiores detalhes acesse: Utilitário sqlcmd

Por fim, este post é apenas para dar uma idéia de como fazer e quais as ferramentas que tenho utilizado para este fim. Espero que este post tenha sido interessante e possa ajuda-los quando precisarem executar um trabalho de stress test.

Até a próxima galera!

Entendendo o Query Optimizer no SQL

Li algumas vezes sobre este assunto em alguns livros e em alguns blogs. Em sala de aula o nível abordado no material oficial da Microsoft é superficial e geralmente não há tempo suficiente para discutir mais de 1 hora sobre este assunto. 

Como estou sempre em busca não apenas de novos conhecimentos, mas manter e atualizar o conhecimento adquirido, hoje estava lendo a respeito do Query Optimizer quando encontrei um artigo do Paul White que me surpreeendeu pela forma como ele aborda o assunto, inclusive com diversos exemplos e uma apresentação, ambos podem serem baixados para consulta. Sem dúvida este artigo é o melhor que eu já li sobre este assunto e por isso quero compartilhar com vocês o acesso para este, são 4 sessões ao todo que podem serem acessadas pelo link abaixo:

Fiquem a vontade para comentarem este post.

Abraços e até a próxima!

Giuliano B. Cardoso

Minha instância SQL Server está atualizada?

Recentemente participando de um projeto de atualização de servidores SQL Server surgiram algumas perguntas simples como:

1. A instância SQL Server está atualizada com o ultimo build?

2. Como faço para saber?

Antigamente era mais simples responder, pois a quantidade de liberações era menor, mas com as atuais versões utilizadas pelo mercado SQL2012, SQL2008R2, SQL2008, SQL2005 e em alguns casos ainda a SQL2000 está dificil manter em mente as ultimas atualizações de cada uma.

Para conseguir responder esta questão facilmente temos alguns sites que podem nos ajudar, mas primeiro vamos verificar como saber qual é a versão do SQL  Server que está instalada, para isso utilizo o comando a seguir:

SELECT  SERVERPROPERTY(‘productversion’), SERVERPROPERTY (‘productlevel’), SERVERPROPERTY (‘edition’)

Conforme o artigo de suporte: http://support.microsoft.com/kb/321185/

Ou podemos utilizar o tradicional:  SELECT @@VERSION

A partir destas informações podemos acessar os blogs:

Estes blogs mantêm atualizado a lista de releases para cada versão.

É muito simples a coleta destas informações, mas saber o local exato onde temos a informação atualizada é uma mão na roda para mantermos nosso ambiente atualizado.

Abraços pessoal e até o próximo post.

Giuliano B. Cardoso

SQL Server Denali – Artigo SQL Magazine

Galera,

Fico feliz em compartilhar com vocês esta notícia, após mais de 2 meses de espera o artigo que escrevi para a SQL Magazine sobre o SQL Server Denali foi publicado na edição 92.

Espero que gostem, neste link vocês podem ver uma prévia do artigo: SQL Server Denali – Revista SQL Magazine 92

Abraços e até o próximo post.


Giuliano B. Cardoso,
Administrador de Empresas com Habilitação em Informática, atua em Tecnologia da Informação há mais de 10 anos, especialista em banco de dados SQL Server, atualmente atua como consultor em Business Intelligence e instrutor de cursos oficiais Microsoft.
Possuí as seguintes certificações: ITIL-F, MCP,MCDBA SQL 2000, MCTS SQL 2005/2008, MCITP SQL2005/2008 e MCT

Mais acessados