terça-feira, 19 de abril de 2011

[SQLServerDF] Encontro XI - Recursos avançados do Service Broker

Bom dia pessoal, tudo bem?
Vamos com mais um encontro do grupo SQLServerDF...

As informações sobre o encontro são:

Local: Auditório da Microsoft - Edifício Corporate Financial Center, sala 302
Data e horário: 10/05/2011, 17:00h ~ 19:00h
Tema: Recursos avançados do Service Broker
Agenda:
- Utilizando o SQL Service Broker e Mensageria de dados no SQL Server em cenários distribuídos
- Uma aplicação prática do Service Broker em cenários de múltiplos bancos em instâncias diferentes
Descrição: Essa é uma apresentação sobre implementações avançadas do Service Broker que apresentará o uso dessa feature em cenários complexos envolvendo processamento distribuído em várias instâncias. Trata-se de uma continuação da sessão do encontro anterior que fez uma apresentação do Service Broker.
Palestrante: Gustavo Maia Aguiar
Gustavo Maia Aguiar é pós-graduado em bancos de dados e trabalha com SQL Server desde 2003 possuindo larga experiência em projetos de implementação e manutenção banco de dados nessa plataforma. Possui as certificações MCP, MCDBA, MCITP, MCT e MVP em SQL Server. É membro ativo e moderador dos fóruns MSDN, Technet e das comunidades SQL Server Brasil e SQL Brasil (Orkut) e posta artigos técnicos em seu blog: http://gustavomaiaaguiar.wordpress.com

Favor mandar para o grupo um e-mail confirmando sua presença para luan.moreno@srnimbus.com.br, pois a capacidade do auditório não é ilimitado.

[]s
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br

[SQLServerDF] Encontro X - Introdução ao Service Broker

Bom dia pessoal, tudo bem?
Vamos com mais um encontro do grupo SQLServerDF...

As informações sobre o encontro são:


Local: Auditório da Microsoft - Edifício Corporate Financial Center, sala 302
Data e horário: 27/04/2011, 17:00h ~ 19:00h
Tema: Introdução ao Service Broker
Agenda:
- Introdução ao SQL Service Broker e Mensageria de dados no SQL Server
- Uma aplicação prática do Service Broker em cenários de vários bancos de dados na mesma instância
Descrição: Essa é uma apresentação sobre o Service Broker e aplicações de mensageria utilizando o SQL Server onde serão apresentados os fundamentos de aplicações baseadas em mensageria, conceitos e benefícios do Service Broker bem como um cenário prático de utilização do mesmo. Essa sessão irá servir de introdução para o próximo encontro, onde serão apresentados recursos e implementações envolvendo instâncias diferentes.
Palestrante: Gustavo Maia Aguiar
Gustavo Maia Aguiar é pós-graduado em bancos de dados e trabalha com SQL Server desde 2003 possuindo larga experiência em projetos de implementação e manutenção banco de dados nessa plataforma. Possui as certificações MCP, MCDBA, MCITP, MCT e MVP em SQL Server. É membro ativo e moderador dos fóruns MSDN, Technet e das comunidades SQL Server Brasil e SQL Brasil (Orkut) e posta artigos técnicos em seu blog: http://gustavomaiaaguiar.wordpress.com

Favor mandar para o grupo um e-mail confirmando sua presença para luan.moreno@srnimbus.com.br, pois a capacidade do auditório não é ilimitado.

[]s
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br

quinta-feira, 14 de abril de 2011

ADO.NET SqlParameter vs. Plan Cache

Oi pessoal, escrevi um novo artigo sobre o uso efetivo do SqlParameter e seu efeito no plan cache do SQL Server. Depois eu penso em atualizar o blog com o texto (sim, não tenho muita paciência para formatação), mas publiquei o PDF no skydrive.



Espero que vocês gostem...

[]s
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
http://www.srnimbus.com.br/

quinta-feira, 7 de abril de 2011

Novo Treinamento! Database Mirroring

Um novo post direto do blog adormecido!
Como já fizemos no ano passado com o treinamento de Upgrade para o SQL Server 2008, a Sr. Nimbus e o MVP Gustavo Aguiar estão trabalhando juntos novamente. Desta vez com um novo treinamento, focado em Database Mirroring!

Se você faz parte do grupo que já percebeu a superficialidade dos capítulos de alta disponibilidade (incluindo o assunto do database mirroring) nos cursos de SQL Server encontrados por aí, e não vê a hora de participar de um treinamento que realmente vá mostrar em detalhes como o recurso funciona, explorar cenários complexos e, claro, ajudar você a resolver seus problemas, então vamos te ajudar.

Na última semana de Maio/2011, com duração de 24 horas, a Sr. Nimbus e Gustavo Aguiar vão ministrar o primeiro treinamento focado em Database Mirroring, que acontecerá em Brasília.

Ainda estamos ajustando alguns detalhes do local do treinamento e valor do investimento, mas desde já queremos montar uma lista de interessados, se você é um deles, mande um e-mail para contato@srnimbus.com.br.
A ementa completa para o treinamento está aqui:

Conceitos Básicos
· O funcionamento do Log de Transacoes
· Implementações básicas de Backup
· Modelos de Arquivamento de Log (Recovery Model)
· Deduplicação de dados (Database Snapshots)

Arquitetura
· Nomenclatura e conceitos chaves
· Papéis
· Modos de Operação
· Sessões e Estados
· Inversão de Papéis
· Redirecionamento Transparente das Aplicações
· Melhorias no SQL Server 2008

Planejamento
· Objetivos Primários e Objetivos Secundários
· Requisitos de Infraestrutura
· Requisitos de Design (Banco de Dados, Aplicações e Dependências)
· Preparação do Banco de Dados Espelho

Configuração
· Uso do Wizard
· Implantação Manual
· Uso de Certificados
· Migração das Dependências
· Inicialização, Testes e Problemas Comuns

Administração
· Controlando as sessões de espelhamento
· Monitorando o espelhamento
· Alertas
· Ferramentas
· Views, Contadores e Eventos

Cenários de Recuperação
· Queda do Banco de dados Principal
    § Cenário 1: High Availability
    § Cenário 2: High Protection e High Performance
· Queda do Banco de dados Espelho
· Queda do Banco de dados Testemunha
· Queda de mais de um banco de dados (Principal, Espelho e Testemunha)

Melhores Práticas
- Criptografia e Segurança em bancos espelhados
· Rotinas de Manutenção em bancos espelhados
· Considerações sobre a rede em bancos espelhados

Outras Técnicas de Alta Disponibilidade
· FailOver Clustering
· Log Shipping
· Replicação
· Comparativo das técnicas de alta disponibilidade
· Combinação de outras técnicas de alta disponibilidade com o Database Mirroring
· Soluções equivalentes em outros SGBDs

Gostou? Está interessado? Aposto que sim!


PS: Pode haver alguma alteração ou outra na ementa até a data do treinamento, sempre pensando em como melhorá-lo, claro.

[]s

Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br

quarta-feira, 2 de fevereiro de 2011

SQL Server CLR Unload e GC.Collect

Já existem diversos programadores usando o CLR (Common Language Runtime) que está hospedado dentro do SQL Server. Recentemente em um grupo de discussão apareceu um problema relacionado ao CLR e foi comentado uma maneira de se fazer o unload dos AppDomains que estão no SQL Server.

Se você utilizar o DBCC FREESYSTEMCACHE('ALL'), vai forçar o SQL Server a ativar o mecanismo de limpeza de cada cache store, e no caso do CLR vai forcar um appdomain unload.
Além do que foi citado, existe uma outra abordagem para brincar com o CLR, que é forçar a entrada do Garbage Collector, usando o DBCC FREESYSTEMCACHE('GarbageCollect'). Esse comando não é documentado, mas foi apresentado publicamente pelo Bob Ward no PASS Summit de 2008, então não vejo problema em compartilhar com vocês.

Para vermos a coisa funcionando, vamos monitorar os contadores abaixo, somente para a instância sqlservr e olhar algumas DMVs.

> .NET CLR Loading > Total appdomains unloaded
> .NET CLR Memory > #Gen0 Collections
> .NET CLR Memory > #Gen1 Collections
> .NET CLR Memory > #Gen2 Collections

select * from sys.dm_clr_appdomains
select * from sys.dm_clr_loaded_assemblies

Se você executar uma procedure que trabalha com o CLR e consultar as DMVs, verá uma entrada para o AppDomain e assemblies carregados para execução da sua rotina.
Use o comando para forçar o Garbage Collector e verá que os contadores Gen0, Gen1 e Gen2 serão acrescentados de 1, como meu procedimento é simples e não tenho nenhuma pressão na memória, me parece que é um GC.Collect(2) e não um GC.Collect(), pois a limpeza vai até a geração 2, coisa que não aconteceria em um simples collect com o CLR sem pressão na memória e espaço disponível na gen0.

Quando chamamos o procedimento que faz um AppDomain unload, vamos ver um collect até a geração 2 (provavelmente parte do processo de unload) e depois o contador de unload será acrescido de 1. Consultando logo em seguida as DMVs, verá que nada é retorando, pois o appDomain já foi removido.

Notem que não é uma boa recomendação ficar chamando o GC ou forçando o unload, ainda mais que esse irá interferir em outras cache stores, mas em casos excepcionais isso pode ser útil...


[]s
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
http://www.srnimbus.com.br/