Thiago Zavaschi R2 www.zavaschi.com

6Jan/111

SQL Server Resource Governor

Oi pessoal!

Há algum tempo atrás eu havia iniciado um artigo para a SQL Magazine, mas devido a alguns compromissos não pude finalizar/enviar para a revista.

O artigo está praticamente finalizado e é sobre Resource Governor. Segue o artigo:

Introdução

O Resource Governor é um mecanismo da plataforma SQL Server, tendo seu aparecimento na versão 2008, para controlar o acesso a recursos de memória e processamento. Boa gerência dos recursos disponíveis para o SQL Server pode significar o sucesso ou o fracasso da sua solução de negócio baseada neste sistema gerenciador de bancos de dados (SGBD).

A ideia deste artigo é demonstrar o recurso, onde e como se aplica, e sensibilizar o leitor no que tange a considerações relacionadas à concorrência que ocorre sobre os recursos do(s) servidor(es).

Já viu este cenário?

A aplicação tem seu desenvolvimento concluído (ou é gerado um release ao final de um ciclo), é colocada em um ambiente de validação/homologação e nesta etapa são feitos os testes para verificar a regra de negócio. Colocando os méritos das técnicas de validação um pouco de lado e assumindo que está tudo de acordo, a aplicação é, por fim, posta em produção. E é aí que os problemas mais graves começam...

Algumas semanas depois da aplicação estar em produção, os usuários começam a relatar problemas como a lentidão no sistema, timeouts (especialmente se for uma aplicação web), e etc. Esses problemas são relatados ao mesmo tempo em que as verificações feitas no banco de dados indicam que o consumo de memória e CPU estão próximos ao limite.

Uma análise mais detalhada mostra que a causa da lentidão é causada pela geração dos relatórios, pois os mesmo são extraídos a partir da base de dados de produção. Existem diversas estratégias que podem ser utilizadas para contornar o problema: replicação, espelhamento (mirroring), solução utilizando BI e bases OLAP, etc, etc, etc. Mesmo com a adoção de uma destas estratégias o uso do resource governor é interessante conforme veremos na sequência.

Em um cenário em que a compra de um novo servidor ou a utilização de uma solução de BI não é factível o resource governor pode dar um grande auxílio!

Mas o que é o resource governor?

O resource governor é “simplesmente” um mecanismo para a gerência dos recursos de memória e processador utilizados pelo SQL Server. Com o resource governor é possível classificar as queries disparadas contra a base de dados em workload groups pré-definidos, e estes, por sua vez, são mapeados em resource pools que efetivamente definem as limitações de memória e processamento.

As queries precisam ser classificadas em um dos workload groups criados, tal tarefa é executada por uma função de classificação (classifier function). O código desta função deve ser muito escrito, para garantir o tratamento adequado das queries, que podem ter características de mais de um workload group. A figura 1 contempla um esquema deste mecanismo.

Mas em quais cenários o Resource Governor é interessante ser aplicado? Principalmente para três cenários: Controle de queries “soltas” executadas no banco; controle da concorrência previsível de workloads (base de produção x relatórios, por exemplo); e a priorização dos workloads.

clip_image002

Figura 1. Arquitetura macro do mecanismo de Resouce Governor

Criando Resource Pools

Os resource pools representam os recursos físicos do servidor (memória e CPU). No SQL Server 2008 estes pools definem as quantidades máxima e mínima da utilização dos recursos. Existem livros que tratam resource pools como sendo instâncias virtuais do SQL Server, eu penso que é quase isso, visto que poderíamos ter uma separação mais consistente (além de memória e CPU). No SQL Server 2008 existem dois resource pools pré-definidos: Internal e o Default.

O pool internal é usado somente pela engine do SQL Server, não é possível apagá-lo ou fazer quaisquer alterações sobre as suas capacidades mínimas e máximas sobre os recursos.

O pool default será usado pelos workloads que não estão associados a nenhum resource pool. Caso o resource governor não esteja configurado na sua instância do SQL Server, todas as suas queries executarão neste pool. Não é possível apagá-lo ou alterá-lo, com exceção aos seus valores máximos e mínimos associados aos recursos que podem ser configurados.

Os administradores de bancos de dados podem criar novos resource pools. Seguindo o raciocínio do cenário anterior, vamos criar dois pools: um para as queries “normais” e outro para as queries executadas para extrair dados para os relatórios. A listagem 1 mostra o comando Transact-SQL para a criação do Resource Pool. Um detalhe importante é que a soma dos valores mínimos dos pools não pode ser maior que 100 %. O valor máximo individual de cada pool é de até 100 %, mas devemos lembrar de que este valor não será o real caso haja mais de um pool com este valor máximo. O cálculo do valor máximo efetivo deve ser feito subtraindo a soma dos demais mínimos, e este sim será o valor mais elevado atingido pelo SQL Server. Para nossos exemplos, inicialmente colocaremos ambos os pools com percentual máximo de 100 % de CPU.

Listagem 1. Criação dos Resource Pools

CREATE RESOURCE POOL NormalQueries

WITH (MAX_CPU_PERCENT = 100)

CREATE RESOURCE POOL RelatorioQueries

WITH (MAX_CPU_PERCENT = 100)

A sintaxe associada aos Resource Pools e os parâmetros passíveis de configuração, podem ser vistos na listagem 2 (o “valor” é um número correspondido de 1 a 100, para os valores máximos, e de 0 a 100 para os valores mínimos). Acredito que o nome dos parâmetros e a sintaxe são auto explicativos e por isso não entrarei em maiores detalhes, para mais informações consultar o Books Online do SQL Server 2008). Um detalhe importante é a utilização de aspas (“, ”) ou de colchetes ([, ]) na palavra default para evitar conflitos com a palavra reservada DEFAULT, isto vale para as sintaxes subseqüentes também).

Listagem 2. Sintaxe e Parâmetros Configuráveis - Resource Pool

CREATE|ALTER|DROP RESOURCE POOL { pool_name | "default" }

[WITH

( [ MIN_CPU_PERCENT = valor ]

     [ [ , ] MAX_CPU_PERCENT = valor ]

     [ [ , ] MIN_MEMORY_PERCENT = valor ]

     [ [ , ] MAX_MEMORY_PERCENT = valor ] )

]

[;]

Se não forem criados Resource Pools próprios, isto é, sempre utilizar o pool padrão, podemos dizer que é um comportamento similar ao encontrado no SQL Server 2005. Devemos também nos atentar para a limitação do número de pools que é de 20 (incluindo os dois pré-definidos).

Criando Workload Groups

Já vimos como fazer a criação dos resource pools, mas também foi visto que necessitamos de workload groups mapeados nestes pools para configurar o resource governor, pois se associarmos usuários diretamente aos pools poderia ser extremamente custoso qualquer gerência, para não dizer quase impossível. Acredito que um dos elementos mais interessantes dos workload groups é a capacidade de definir prioridade (baixa, média, alta) aos mesmos, o que aumenta ainda mais a granularidade da configuração possível. Por padrão a prioridade é a média (MEDIUM).

Um pool pode mapear zero ou mais workloads, por sua vez, mapeados com as queries dos usuários, mas um workload group só pode estar em um único pool (e sempre estará em um).

Vamos criar três workload groups (para exemplificar múltiplos workloads por pool): AdhocAdm, UsuariosNormais, Relatorios. Os comandos Transact-SQL para a criação dos workloads, para o nosso exemplo, podem ser vistos na listagem 3. A cláusula USING serve para mapear o workload sendo criado a um pool existente. Como já mencionado, as queries que se encaixarem nos workload groups não associados a um resource pool, utilizarão o resource pool default (sempre existente).

Listagem 3. Criação dos Workload Groups

CREATE WORKLOAD GROUP AdhocAdm

USING NormalQueries

CREATE WORKLOAD GROUP UsuariosNormais

USING NormalQueries

CREATE WORKLOAD GROUP Relatorios

USING RelatorioQueries

A listagem 4 mostra a sintaxe completa associada à manipulação de workload groups e também os parâmetros configuráveis.

Listagem 4. Sintaxe do Workload Group e seus Parâmetros Configuráveis

CREATE|ALTER|DROP WORKLOAD GROUP { group_name | "default" }

[WITH

([IMPORTANCE = { LOW | MEDIUM | HIGH }]

[[,] REQUEST_MAX_MEMORY_GRANT_PERCENT = valor ]

[[,] REQUEST_MAX_CPU_TIME_SEC = valor ]

[[,] REQUEST_MEMORY_GRANT_TIMEOUT_SEC = valor ]

[[,] MAX_DOP = valor ]

[[,] GROUP_MAX_REQUESTS = valor ] )

]

[USING { pool_name | "default" }]

[;]

A sintaxe associada é um pouco mais complexa que a dos resource pools e por isso entrarei nos méritos de cada parâmetro.

IMPORTANCE: Define a prioridade do workload group, por padrão (se não especificada) é a média. Este grau de prioridade é usado para cálculos entre workgroups dentro do mesmo resource pool e não afeta os outros workload groups associados a outros resource pools.

REQUEST_MAX_MEMORY_GRANT_PERCENT: Especifica a quantidade máxima de memória que uma requisição única consegue utilizar do pool. Esta porcentagem é relativa ao tamanho da memória disponível ao pool (MAX_MEMORY_PERCENT). O parâmetro valor precisa ser zero ou um inteiro positivo até 100. O valor padrão (se não especificado) é 25.

REQUEST_MAX_CPU_TIME_SEC: Especifica o máximo de tempo (segundos) que uma query pode esperar por um recurso até ficar disponível antes da query falhar. O valor precisa ser 0 ou um inteiro positivo. Por padrão este valor é zero. O Resource Governor não impede a query de executar caso o tempo limite seja atingido, mas um evento é gerado (mais informações no Books Online do SQL Server 2008, ver sobre “CPU Threshold Exceeded Event Class”).

REQUEST_MEMORY_GRANT_TIMEOUT_SEC: Especifica o tempo máximo (segundos) que uma query pode esperar por memória (work buffer memory) até ficar disponível. O valor necessita ser um valor maior ou igua a 0 (padrão). Atingir o tempo limite não significa necessariamente que a execução da query irá falhar, isto só ocorrerá se existirem muitas solicitações concorrentes, a query executará na verdade com uma quantidade menor de memória disponível (o que pode afetar o desempenho da mesma).

MAX_DOP: Especifica o grau máximo de paralelismo (DOP: degree of parallelism) para requisições paralelas. O valor precisa ser 0 ou um número inteiro positivo, onde o valor máximo é de 64. O valor padrão é 0, e significa que útilizará o valor global configurado.

GROUP_MAX_REQUESTS: Especifica o número máximo de requisições simultâneas que são permitidas executar em um mesmo workload group. O valor precisa ser 0 ou um inteiro positivo. O valor padrão é 0 (requisições ilimitadas, teoricamente).

Por fim, a cláusula USING indica qual resource pool será utilizado, por padrão será o pool default.

Com o mapeamento resource pool ó workload group feito, devemos configurar a Classifier Function (função de classificação) que definirá qual o workload associado à chamada sendo feita.

Função de Classificação (Classifier Function)

Seguindo o raciocínio com base na figura 1, vemos que para efetuar o direcionamento das queries que chegam ao servidor SQL Server (idealmente colocado em um servidor físico diferente do servidor de aplicação) é necessária uma função de classificação. Para a construção do algoritmo de classificação é possível utilizar os parâmetros presentes na string de conexão, tais como: endereço IP; nome da aplicação; nome do usuário; entre outros. Sabendo o que é possível utilizar, é necessário definir as políticas que estarão presentes na função. Entre as funções auxiliares disponíveis podemos citar: SUSER_NAME(), HOST_NAME(), SUSER_SNAME(), etc. Temos também as novas funções: CONNECTIONPROPERTY(), ORIGINAL_DB_NAME() e também as novas opções para LOGINPROPERTY(). Para maior detalhamento do comportamento destas funções, favor olhar o Books Online do SQL Server 2008.

Para efeito de exemplificação utilizaremos os seguintes critérios:

Caso o usuário tenha aberto uma sessão através do SQL Server Management Studio (nome da aplicação) então deverá ser classificado no workload AdhocAdm.

Caso seja o usuário ‘Relatorio’, então será classificado para o workload de Relatorios.

Todos os demais que não se enquadrarem em nenhuma das regras anteriores serão classificados para o workload de UsuariosNormais.

Acompanhe o script de criação destas regras na listagem 5.

Listagem 5. Criação da Classifier Function

USE MASTER

GO

CREATE FUNCTION fnClassificadora()

RETURNS SYSNAME WITH SCHEMABINDING

BEGIN

DECLARE @x SYSNAME

IF APP_NAME() LIKE 'Microsoft SQL Server Management Studio%'

BEGIN

SET @x = 'AdhocAdm';

RETURN @x;

END

DECLARE @user VARCHAR(50) = SUSER_SNAME();

IF @user = 'Relatorio'

BEGIN

SET @x = 'Relatorios';

RETURN @x;

END

SET @x = 'UsuariosNormais';

RETURN @x;

END

A função de classificação demonstrada é bastante simples, mas contempla todas as definições que mencionei anteriormente. Fique atento, uma mesma sessão pode se encaixar em mais de um workload group, imagine (segundo nosso exemplo) se o usuário fosse “Relatorio”, mas utilizando o SQL Server Management Studio, logo caracterizando a presença em dois grupos distintos. Uma função de classificação bem programada também é peça fundamental de uma configuração bem sucedida do resource governor, com isso poderíamos ter uma função relativamente grande e complexa (dependendo do caso).

A função de classificação está criada, agora falta associá-la ao resource governor. A listagem 6 demonstra o comando Transact-SQL para realizar a associação.

Listagem 6. Associação da Classifier Function com o Resource Governor

ALTER RESOURCE GOVERNOR

WITH (CLASSIFIER_FUNCTION = dbo.fnClassificadora)

Todas as configurações não terão efeito até que o RECONFIGURE seja executado. O script para o RECONFIGURE pode ser observado na listagem 7.

Listagem 7. Execução do RECONFIGURE

ALTER RESOURCE GOVERNOR

RECONFIGURE

Este foi o último ponto de configuração do resource governor, isto significa que a partir desse momento as queries serão executadas segundo os critérios configurados.

---

É isso pessoal, espero que ajude vocês nos seus estudos!

Grande abraço,
Thiago Zavaschi

4Jan/114

MVP – Microsoft Most Valuable Professional

Aeee pessoal!

Queria MUITO contar aqui uma novidade que recebi dia primeiro (devido a minha mudança para São Paulo ficou complicado blogar antes): me tornei o mais novo Microsoft MVP em SQL Server do Brasil! AEEEEE!

MVP_FullColor_ForScreen

O título de MVP é concedido por um período de um ano (podendo ser renovado) para quem contribuiu ativamente com a comunidade técnica no ano anterior. Para mim não é um objetivo, acredito que é um passo muito importante para cada vez mais disseminar conhecimento sobre a plataforma e tecnologia Microsoft.

“Os MVPs (Most Valuable Professionals) Microsoft são pessoas reconhecidas, confiáveis e acessíveis, que têm experiência em um ou mais produtos Microsoft e que participam ativamente de comunidades on-line e off-line com o intuito de compartilhar seu conhecimento e experiência com outros clientes Microsoft.”

Agradeço muito pelo reconhecimento!

Isso me motiva mais ainda em trazer informação e conteúdo aqui para vocês, aguardem novidades (e continuação das séries de posts anteriores)!

Para quem não conhece o programa MVP, mais informações podem ser vistas no blog http://mvpbrasil.wordpress.com e no site microsoft.com/brasil/mvp/overview.mspx ! :)

Grande Abraço!

Ah sim, em breve mais informações dos próximos eventos que participarei!

Filed under: Blog 4 Comments
31Dec/101

Ano Novo Vida Nova (literalmente)

Olá pessoal,

Hoje o post é não técnico, mas não menos importante.

2011 vem aí e com ele muitas mudanças, literalmente. Quem me segue no twitter (@zavaschi) já está por dentro.

Dia 23 de dezembro me desliguei da TechResult empresa na qual trabalhei mais de 3 anos. Foram muitas noites e finais de semana acordados implantando clusters, dando manutenção naquelas janelas de tempo contadas, muito desenvolvimento.. enfim muitas experiências boas (algumas ruins, claro, mas faz parte e também são muito importantes) que levarei ao longo de toda a minha carreira.

Muito obrigado a todos os amigos que fiz e aos mestres que sempre me orientaram!

A mudança é que agora em janeiro vou me mudar para São Paulo (correria!) e irei trabalhar para a Microsoft Brasil como especialista SQL Server e BI no time do João Nunes.

O foco é um pouco diferente do que eu tive nesses últimos tempos, mas acho que o desafio vai ser bom. Além de eu ver de perto a operação de uma multinacional desse porte.

E no que isso afeta você que está lendo? Significa que teremos posts muito mais frequentes e com a visão de alguém que está “lá dentro”.

Espero poder contar com todos vocês nesse novo ano que se inicia!

BOAS FESTAS E EXCELENTE 2011 para todos!

#GO2011

8Dec/102

SQL Server Analysis Services sobre HTTP/HTTPs

Olá pessoal,

Quando pensamos no SSAS, lembramos que o único modo de autenticação que temos é através de Windows Authentication. Não há algo como o Mixed mode do SQL Server.

Mas os clientes que vão consumir os dados do nosso servidor de análise nem sempre está no mesmo domínio que nós. Então como proceder?

É possível sim (SSAS enterprise only) fazer essa conexão externa através de um pump. Ou seja, você cria uma passagem no seu IIS para o seu servidor de análise.

Primeiramente ative seu IIS no seu servidor. (Aqui estou utilizando o IIS7, os passos para o IIS 6 podem ser observados de uma maneira geral neste post, em inglês: Configuring SSAS over HTTP, apesar de falar do SQL Server 2000, os passos são parecidos).

Crie um site no IIS. Dentro deste site crie um diretório virtual e mapeie para um diretório físico. No meu caso nomeei o diretório como “olap” e mapeei para “C:\inetpub\wwwroot\olap”.

imageMesmo que seja usado HTTP (sem SSL) na porta 80, libere no firewall a porta 80 e a porta 2725, para que o Office consiga fazer o acesso ao servidor de análise.

Copie para a pasta mapeada (C:\inetpub\wwwroot\olap) todos os arquivos do diretório: C:\<local da instalacao do SQL Server>\MSAS10_50.<instancia>\OLAP\bin\isapi.

No meu caso o diretório é:
C:\Program Files\Microsoft SQL Server\MSAS10_50.MSSQLSERVER\OLAP\bin\isapi.

O diretório mapeado fica semelhante ao mostrado abaixo:

image

Após isso vá no gerenciador do IIS, clique no diretório virtual que você criou e depois clique em Mapeamentos de Manipulador (Handler Mapping) e depois clique em “Adicionar Mapeamento de Script” (Add Map Script).

Dê um nome para o mapeamento (no meu caso usei olap mesmo) e mapeie para a dll chamada msmdpump.dll que você copiou do diretório do SQL Server.

image

O último detalhe agora é se o ISS não estiver no mesmo servidor do SSAS. Se este for o cenário você deve acertar o arquivo (com o notepad mesmo) msmdpump.ini que está no diretório mapeado para o diretório virtual. O pedaço que você deve ajustar é o <ServerName>. Se for no mesmo servidor, deixe localhost.

<ConfigurationSettings>
<ServerName>localhost</ServerName>
<SessionTimeout>3600</SessionTimeout>
<ConnectionPoolSize>100</ConnectionPoolSize>
</ConfigurationSettings>

Pronto!

Agora você pode usar como servidor para a conexão o seguinte endereço:

http://<servername/ip>/olap/msmdpump.dll.

Lembrando que você deve passar as credenciais, e estas devem estar no domínio do SSAS. O usuário e senha ficaria algo como:

<domínio>\usuario (com a barra mesmo), e a senha normal do usuário.

Este usuário vai ter as permissões normais definidas nas roles da base do SSAS que você estará fazendo o acesso.

É isso, espero que tenham gostado. :-)

Abraços,
Thiago Zavaschi

10Nov/100

SQL Server 11 “Denali” CTP1 – “SQL Server 2011”?

Olá pessoal!

Estou meio afastado do blog por alguns motivos pessoais (notícias rápidas e informações vocês podem conseguir mais rapidamente através do meu twitter – @zavaschi), mas algo que saiu ontem merece (e muito) a minha atenção (e a de vocês também)!

Ontem se iniciou em Seattle o SQL PASS Summit 2010, e no keynote de abertura foi lançado o SQL Denali CTP1 publicamente!

Já instalei e em breve posts sobre o que estou encontrando de novo. Alegre

Saiu muita coisa nova: PDW, Crescent Project, Atlanta Project e mais um monte de outras coisas! Uma verdadeira overdose sobre todos os SQL geeks!

Link para download do Denali CTP1:
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=6a04f16f-f6be-4f92-9c92-f7e5677d91f9

Por enquanto podem ler o post do Felipe Ferreira (@SqlBoy) sobre o keynote de ontem: http://blogs.solidq.com/fferreira/Post.aspx?ID=11&title=SQL+PASS+%E2%80%93+Keynote+1

Artigos técnicos sobre o Denali:

http://blogs.lessthandot.com/index.php/DataMgmt/DataDesign/a-first-look-at-sequences-in-sql-server

http://sqlfromhell.wordpress.com/2010/11/10/sql-server-2011-ctp-1-sequences/

O que há de novo no Denali:

http://msdn.microsoft.com/en-us/library/bb500435%28SQL.110%29.aspx

Por enquanto é isso pessoal, em breve começo a minha jornada! Smiley de boca aberta

Grande abraço a todos!
Thiago Zavaschi

Filed under: Blog No Comments
24Sep/100

DevDay Curitiba

Olá pessoal!

Sábado agora (25/09) vou palestar no primeiro DevDay Curitiba!

DevDay_SouPalestrante_185x150

Como é a primeira edição do evento, será totalmente gratuito e ainda contará com palestrantes de alto nível!

Eu falarei dos novos tipos de dados para dados espaciais, falarei rapidamente sobre BI e mostrarei a integração dos dados espaciais com informações “clássicas” do nosso BI!

Acompanhe o evento no twitter: #DevDay. Segue a agenda (maiores informações no site www.devday.com.br):

08:00 – 08:50
Credenciamento

08:55 – 09:00
Abertura – Igor Musardo e Rodolpho Carmo

09:00 – 09:50
“Business Intelligence usando informações Geoespaciais” – Thiago Zavaschi

09:55 – 10:45
“Silverlight sob a ótica de um desenvolvedor Adobe Flex” – Igor Musardo

10:50 – 11:05
Coffee Break – Networking

11:10 – 12:00
“Implementando MVVM na prática” – Djonatas Tenfen

12:00 – 13:30
Almoço

13h30 – 14:00
Social Networking

14:00 – 14:50
“Construa uma aplicação Silverlight para Windows Phone 7 em 50min” – Rodolpho Carmo

14:55 – 15:45
“ASP.NET MVC + JQuery” – Victor Cavalcante

15:50 – 16:05
Coffee Break  – Networking

16:10 – 17:00
“Desenvolvedor Profissional” – Giovanni Bassi

Abraços!
Thiago Zavaschi

Tagged as: , No Comments
22Sep/105

Faça um DBA feliz! #1

Olá pessoal!

Você como desenvolvedor deve pensar que agradar àquele cara que fica sentado junto ao pessoal de infra é difícil, mas não é não!

Essa série irei passar pequenas dicas que podem facilitar (e muito) a vida do DBA. No final das contas ele pode até te pagar uma cerveja por isso :).

É muito comum encontrar cenários de bases de dados SQL Server unificadas, e diversos (eu falei, diversooos!) sistemas que a utilizam.

É muito comum também existirem certas queries que não estão, digamos, muito otimizadas e que forçam muito o servidor. É papel do DBA identificar, tentar corrigir se possível e avisar aos responsáveis.

O problema é justamente saber a quem avisar… Existe uma solução muito simples pra isso.

Quando o DBA está visualizando o que está acontecendo no banco, se a aplicação informar, aparece o nome da aplicação, caso contrário aparece: .NET sqlClient Data Provider (nome genérico e sem significado de negócio direto).

É possível especificar um parâmetro opcional na connection string chamado Application Name e resolver isso:

Data Source=SERVIDOR;Initial Catalog=BASEDEDADOS;User Id=USER;Password=PASS;Application Name=NomeAplicacao;

Isso resulta numa bela visão para facilidar o tracking do DBA!
Comando executado:

select spid, program_name, * from sys.sysprocesses
where program_name <> ''

image

É isso pessoal. A ideia desta série é ter posts curtos e diretos! O próximo deve ser relacionado ao SQL dinâmico, não percam!

Abraços e excelente fim de noite!

20Sep/105

TechEd Brasil 2010

Bom dia pessoal!

Os que acompanham o blog devem ter visto o último post que comentei sobre o TechEd 2010 e as sessões que eu ia ministrar lá. O evento foi na semana passada e gostaria de deixar aqui as minhas impressões e a rotina que foi durante essa semana de eventos (TechEd e Community Zone).

A ida foi no domingo, sem maiores entraves (com excessão ao desencontro com o Daniel Oliveira (blog | twitter) no aeroporto).

Cheguei e fui encontrar a galera que estava no shopping Center Norte confraternizando, regado a muitas Erdinger’s :). E depois um pulo no Outback pra matar aquele(s) Ribs on the Barbie com o pessoal da SolidQ (Felipe, Eladio e Javier). Tive que ser o guia da noite pois era o “único” que falava português, pelo menos foi o que o pessoal lá achou. Muitas discussões sobre SQL Server e ainda pudemos acompanhar 379 aniversários que ocorreram na “mesma” data. Ainda acompanhei a revisão da palestra que o Javier ministraria no dia seguinte junto ao Felipe. Moral da história 4 horas de sono.

Dia seguinte, primeiro dia de TechEd, houve a General Session, que se iniciou pela apresentação do Michel Levy (presidente da Microsoft Brasil). Pontos muito positivos: o show com todos fantasiados de comandantes (a ideia era propagar a idéia de nuvem – cloud computing), Kinect, Windows Phone 7, Steve Fox falando de SharePoint e uma ponta de PowerPivot :-). Ah sim, o Prado é um excelente apresentador! Moral da general session: nuvem = infinitas possibilidades. Foi bacana rever uma galera!

IMG_6960

A primeira palestra que assisti foi a do Felipe com o Javier Loria, sobre Gerenciamento de múltiplos servidores com o SQL Server 2008. Muito boa! Mostraram sobre monitoramento em múltiplas instâncias, e sobre o desenvolvimento de aplicações data-tier.

IMG_7013 

A segunda teve o nome de “Tecnologias para Data warehouse: SQL Server Enterprise, Fast Track e PDW” e foi apresentada pelo Gustavo Gattass. Me ajudou a enteder melhor os conceitos por trás do PDW que deve sair até a metade do ano que vem e também sobre os benchmarks por trás do Fast Track. Para saber mais sobre fast track acessem: http://www.microsoft.com/sqlserver/2008/en/us/fasttrack.aspx.

A terceira palestra do dia foi com o grande Luti (Luciano Moreira) com o tema: Garantindo a qualidade dos dados com Master Data Services. Enfatizou a importância da qualidade dos dados e mostrou a tecnologia da Microsoft para o Master Data Management, o Master Data Services. Há algum tempo atrás havia moderado um MSDN webcast dele sobre o assunto, e aproveitei para tirar algumas dúvidas!

A noite tínha sido combinado (via twitter e facebook) a primeira edição do PZGeek, organizado pelo Luciano Palma. Mas antes disso, assisti a uma sessão extra com o Pimenta e o PFE André Hass sobre a profissão de DBA. É interessante ver a visão de outros profissionais sobre assuntos em comum. Neste mesmo instante estava tendo uma palestra sobre Scrum, que pelo que me falaram foi um tanto quanto extremada, mas cada um com a sua visão, certo?

O PZGeek ocorreu em uma modesta pizzaria de bairro num local próximo ao CenterNorte e contou com dezenas de pessoas! Foi bom para rever alguns amigos que não foram ao Community Zone, porque de pizza mesmo ficou devendo (muita gente!), pois a demanda era MUITO grande. Discurso do Luciano Palma e mais algumas fotos batidas.

IMG_7017

E lá se foi o primeiro dia de TechEd BR 2010. Até então estava tudo tranquilo, somente flores na vida de Joseph Klimber, digo, Thiago Zavaschi.

No intervalo de segunda para terça-feira fiquei revisando minhas demos e a apresentação do dia seguinte. Moral que perdi a primeira palestra da terça-feira, mas acontece né? :). Horas dormidas 5.

Agora no segundo dia a coisa seria mais puxada: palestras o dia todo; eu palestraria no último horário do dia e na sequência havia o Ask the Experts!

A primeira palestra que vi no dia foi a: Mitos e realidades sobre consolidação e virtualização com Microsoft SQL Server. E após o almoço, já de barriga cheia, fui ver uma palestra “light” do Luti chamada “Compilação, planos de execução e cache de planos: como evitar as armadilhas”, lv 400. Bem básica né? Estou aguardando os scripts dele para poder brincar um pouco aqui. :)

Na sequência fui assistir a palestra do Nilton Pinheiro e do Helerson Pontes sobre auditoria, com o tema “Auditoria de um ambiente SQL Server 2008 R2”, onde foram mostradas diversas tecnologias para rastrear as mudanças e realizar auditoria (em breve posts sobre o assunto aqui no blog).

IMG_7028

Eis que a próxima palestra seria a minha. Devo ter sentido meu estomago na boca umas 15 vezes (e isso somente na meia hora que intercalava a minha palestra com a do Nilton). Como havia dito, as minhas palestras eram na track de BI, cheguei lá e estava o Daniel Camilo terminando a sua sessão.

A minha primeira sessão teve o tema: “Arquitetura e preparação de infraestrutura de PowerPivot no Excel e Sharepoint”. Poucos minutos depois de começar já estava mais tranquilo. Consegui mostrar tudo o que eu queria, e inclusive provei muito do que eu falei (mesmo sem ter muita aplicação prática :-).

Mostrei que os dados ficam na verdade dentro de um arquivo chamado item1.data no formato de backup do SSAS 2008 R2, fiz o restore ao vivo deste arquivo em uma instância do SSAS! Também mostrei que na verdade todas as DAX (Data Analysis eXpressions) são convertidas em MDX para a interação com o cubo presente no arquivo Excel.

Depois de apresentar a parte cliente (PowerPivot for Excel), foi a hora de mostrar o servidor (PowerPivot for SharePoint), onde apresentei as considerações para instalação (New/Existing farm). Expliquei sobre como funciona o data refresh e como demo mostrei o management dashboard do PowerPivot. Para saber mais sobre a dashboard do PowerPivot vejam esse link: http://bit.ly/9C9yKd e sobre Data Refresh vejam esse whitepaper do meu amigo Mariano (@MarianoTN - Microsoft): http://bit.ly/a7Rhqk. Mantive bastante texto nos slides, para servir de referência futura.

[Sara]Palestra_Zavaschi_01

Passado a palestra e eu já bem mais “calmo”, teve o Ask the Experts, onde fiquei na mesa de Business Intelligence ajudando o pessoal que estava com dúvidas. Muito bacana a conversa!

Pós Ask, fui jantar com o pessoal da TechResult no Viena do shopping Center Norte, não recomendo, mas enfim heheh. Voltando para o hotel, fui revisar a palestra do dia seguinte, que seria a primeira da manhã! (Horas dormidas 4). O nível era 400, logo já imaginei que o pessoal estaria meio sonolento :). Mas o que ocorreu foi que estavam (até mostrei o vídeo do café para quebrar o gelo do início de dia de palestras :-) muito dispostos a aprender sobre modelos do PowerPivot e sobre DAX, foi fantástico. Não consegui mostrar tudo o que eu queria, mas espero que a mensagem tenha chego a todos: o mais importante com DAX é o contexto! Em breve farei um post sobre a palestra.

Valeu a todos os que assistiram e em especial aos meus amigos que deram uma excelente força! Valeu mesmo!

[Sara]Palestra_Zavaschi_03 [Sara]Palestra_Zavaschi_05

Passadas as palestras fiquei bem mais tranquilo e fui para as demais sessões assistir sobre SQL Server e Business Intelligence. São nestas horas que você vê o quanto ainda tem que estudar! A hora que eu chegar a 10% do que essas pessoas sabem, vou ter aprendido muito!

Na sequência assisti a várias palestras de SQL e BI, “Criando Dashboards no PerformacePoint Services do SharePoint 2010” e depois outra sobre Excel Services Visio Services, ambas do Thiago Cruz.

A palestra do meu amigo Péricles Rocha que seria no mesmo horário da minha foi transferida para o próximo horário, então fui lá vê-lo falar de migração de SQL Server. E por fim mas não menos importante, fui para a track de suporte (??) ver o Catae e o Gentili falando sobre problemas encontrados nos ambientes SQL Server, com muitas demos para mostrar os passos de troubleshooting. Nível 400, animal! Teve direito a até piadinha pro nosso amigo gaúcho Felipe Ferreira (que não estava presente :-(), tchê! Infelizmente, esta caiu no mesmo horário de outra palestra que gostaria de ver (sobre service broker), mas fazer o que né?

IMG_7044 IMG_7046   IMG_7049 IMG_7024

E no fim não ganhei nenhum xbox (não concorri a nenhum heheh). E depois fomos comemorar o grande evento :). Horas dormidas efetivamente 3.

Horas de sono de uma pessoa normal: 32.
As minhas horas de sono: 16.

Metade… é ta bom né? :)

Resumindo o evento em uma palavra: FANTÁSTICO. Após análise dos números foi classificado como 3 maior TechEd do planeta! Ficando atrás apenas dos TechEd americano e do TechEd Europa!

Os slides e o script que tomei como base na demo de DAX encontram-se aqui: http://cid-8de5a8efc1819eca.office.live.com/browse.aspx/P%c3%bablico/TechEd2010.

Abraços,
Thiago Zavaschi

Tagged as: 5 Comments
10Jul/105

TechEd Brasil 2010 – Eu estarei lá, e você?

botton_c_180x180[1]Então pessoal, quem acompanha o blog há algum tempo deve ter visto os posts (dia 1, dia 2 e 3) que fiz (blog antigo) ano passado sobre o TechEd Brasil 2009.

O TechEd Brasil é o maior evento tecnológico da Microsoft da América Latina!! Corresponde a 3 dias de palestras de altíssimo nível, tanto para desenvolvedores quanto para IT pros.

Ano passado fui somente para assistir as palestras e reforçar o meu network pessoal (experiência fantástica!).

Este ano estou MUITO feliz em anunciar que fui convidado para palestrar (sim!) neste evento fantástico. Sei que a responsabilidade é grande e farei por merecer o meu convite!

O evento é dividido em tracks, eu farei duas palestras na track de Business Intelligence. Os temas/níveis serão:

Sessão: BI401
Nível: 400
Título: PowerPivot Avançado: Modelagem, formulas e DAX
Descritivo: DAX (Data Analysis Expressions) é uma nova linguagem para os usuários finais adicionar lógica de negócios aos aplicativos PowerPivot. DAX é uma linguagem poderosa e flexível, que mantém a simplicidade e familiaridade do Excel. Esta sessão explica os conceitos básicos e os conceitos por trás da DAX e demonstra como adicionar lógica de negócios em PowerPivot usando colunas calculadas e medidas. Esta sessão também apresenta várias categorias de funções DAX - funções escalares, tabelas, agregações - mas não se destina a ser uma visão abrangente.

Sessão: BI307
Nível: 300
Título: Arquitetura e preparação de infraestrutura de PowerPivot no Excel e Sharepoint

Agradeço novamente a comissão organizadora do TechEd 2010, valeu!!

Você não vai perder, vai?! Nos vemos em setembro!

Abraços,
Thiago Zavaschi

Tagged as: , 5 Comments
29Jun/100

Material Webcast – Padronize seus Dados com o SQL Server 2008 R2 Master Data Services

Olá pessoal!

Hoje moderei um MSDN webcast do grande Luciano “Luti” Moreira sobre Master Data Management, mais especificamente a ferramenta da Microsoft para este conceito: o Master Data Services (MDS).

O webcast foi bem bacana com conteúdo e demonstrações de nível 100/200. Lembrando que é uma tecnologia bem nova. Estou botando fé nela, mas ainda acho (assim como o Luti) que há pontos de melhoria. Tenho certeza eu o time que está desenvolvendo o SQL11 (próximo release, cujo provável codename é “Denali”) deve estar ajustando bastante!

O nome do webcast foi: “Padronize seus Dados com o SQL Server 2008 R2 Master Data Services”. Vou escrever algo a respeito ainda, e o Luti já começou a falar no blog dele.

Link para o webcast (para baixar, amanhã já deve estar disponível):
https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032449964&EventCategory=4&culture=pt-BR&CountryCode=BR.

Link para o ppt da apresentação:
http://cid-e145f7753042d628.office.live.com/self.aspx/Public/Apresentacoes/Padronize%20seus%20dados%20com%20o%20SQL%20Server%202008%20R2%20Master%20Data%20Services.pdf.

É isso ae! Parabéns ao Luti pelo excelente webcast!

Abraços,
Thiago Zavaschi