Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
POWERED BY
e-magazine
CODIFICANDO.NET
2 0 0 8
E D I Ç Ã O 7 N Ú M E R O 7 A N O 2
Editorial
Fala Galera, quando eu assumi a editoração da revista coloquei uma meta interna de soltarmos uma
edição a cada bimestre (ou 2 meses, fica a seu critério, rs). Esta é a segunda revista que está nas minhas
obrigações, e conseguimos publicar-la dois meses depois da anterior... Para nós isso é uma vitória.
Espero que o conteúdo diversificado atenda aos objetivos e anseios de vocês, afinal, a revista é para
vocês. Então, se alguma coisa não ficou legal ou vocês tenham alguma sugestão/critica/elogio a nos fazer
podem ficar a vontade para nos enviar um e-mail em algum dos nossos endereços:
site@codificandomagazine.net
grito@codificandomagazine.net
Em todas as edições nós deixamos claro o quão difícil é arrumar pessoal qualificado e com conteúdo
interessante para colocarmos na revista, nesta não será diferente. Está complicadíssimo conseguirmos
artigos práticos e interessantes para colocar na revista, então, novamente, deixamos aqui o convite para
vocês interagirem com a comunidade que participam. Quem tiver interesse em publicar algo na nossa
revista (nossa porque é da comunidade, de todos nós), entre em contato conosco nos e-mails acima.
Diego Nogare
site@codificandomagazine.net
Equipe
Editores:
Alexandre Tarifa
Emerson Facunte
Diego Nogare
Sergio Gonçalves
Colaboradores:
Adriano Luciano
Alexandre Tarifa
Cleber Dantas
Diego Nogare
Emerson Facunte
Fabiano Belmonte
Fabiano Neves
Juliano Nunes
Marcelo Colla
Ramon Durães
Ricardo Serradas
3
Entrevista
Esta entrevista foi feita por e-mail com muitos nomes conhecidos do mundo Sql Server, infelizmente não teríamos como publicar todas as
respostas aqui na revista, então selecionamos três entrevistas que já estavam completas para compor esta sessão. A entrevista foi criada pelas
idéias de Fabiano Neves, que inclusive respondeu todas as perguntas e nos enviou para publicarmos na revista. TODAS as entrevistas serão
publicadas no Blog do próprio Fabiano. Segue as descrições dos três participantes da entrevista:
DN) Diego Nogare é graduado em Ciência da Computação, Pós-Graduado em Engenharia de Computação com ênfase em Desenvolvimento
Web com .NET. Colaborador do Portal Linha de Código e da revista SQL Magazine, co-Líder do grupo de usuários Codificando .NET, Líder
dos Microsoft Student Partners [MSP] de São Paulo e Microsoft Most Valuable Professional [MVP] em SQL Server, possui certificações MCP e
MCTS em SQL Server 2005, é palestrante em eventos da Microsoft, Codificando .NET e INETA BR, mantém o site: www.diegonogare.net
FN) Fabiano Neves é consultor de Banco de Dados Sql Server 2000,2005 e 2008, desenvolve soluções na plataforma .NET e em Delphi. É
técnico em processamento de dados pelo colégio Bezerra de Menezes, e trabalha a alguns anos com Sql Server focado na criação de Data
Warehouse para muitas empresas do Brasil, mas já atuou como Database Solution para uma empresa Microsoft Solution Gold Partner. Possui
certificações como MCP, MCTS e MCITP Database Developer em Sql Server 2005. Mantém um blog (http://fabianosqlserver.spaces.live.com)
com seu conteúdo focado para DBA, Desenvolvedores e Usuários de Sql Server. Participa ativamente do Forum da MSDN e TechNet Brasil,
e ainda ministra WebCasts para a Microsoft Brasil.
MC) Formado na Escola Superior de Ensinos Empresariais e Informática de Curitiba, pós graduado em Gestão de Informática, com 11 anos de
experiência na área. Participa dos foruns de Sql Server do Msdn Br e Technet, MCDBA - MCITP DEV - MCITP DBA - Most Valuable
Professional Windows Server System – SQL Server.
P) Vamos começar falando da novidade do momento, quais as novas features do SQL Server 2008 que você acha mais
importante, e porque? Nomeie pelo menos 3.
DN) 1) Merge: Juntar informações de tabelas para auxiliar a criação de cubos olap ficou mais simples e dinâmico, agora é muito mais facil para
realizar estes tipos de transações.
2) Spatial Data: Nestes ultimos anos, muitas empresas de logística estão trabalhando com controle terrestre de suas rotas. Conseguindo
rastrear o percurso percorrido, por exemplo, pelos caminhões. Com os dados Geometricos é possível traçar linhas e confrontar com os
dados gerados pelo GPS do caminhão.
3) DMF: O Declarative Management Framework permite criar diversas políticas de utilização do banco de dados, aumentando a eficiência da
aplicação das politicas estipuladas para o database. No DMF, por exemplo, é possível criar políticas que estipulam o nome da tabela, a
obrigatoriedade de um determinado schema ou usuário, estipular se a política será executada em todos os bancos ou só alguns, e em quais
servidores ela trabalhará ... aplicado a praticamente todos os objetos do banco de dados.
FN) 1) que me fez parar e dizer UAU foram as implementações de Page Compression, Row Compression e Backup Compression, fiz alguns
testes e me surpreendi com a qualidade de compressão de dados. Vou repetir uma frase que usei na WebCast de “Caminhos de Upgrade
para SQL Server 2008”, - Imagina comprimir um livro de 1000 páginas para apenas 200 e com o mesmo conteúdo, pois é mais ou menos isso
que o algoritmo de compressão por página LZ78 criado pelos geeks seniors Lempel e Ziv faz. Nos meus testes cheguei a seguinte conclusão.
2) Filtered Index – Essa veio bem a calhar, poder escrever um comando de “create index ix_teste on tabela(data) where data > „20080101‟”
vai ajudar e muito para quem tem tabelas muito grandes e com acesso a dados mais recentes, caso partition não for uma possibilidade, imagine
o seguinte, poderíamos criar um índice para cada período e gravar cada índice em um filegroup diferente que por sua vez estará em discos
diferentes. Interesting... vale a pena estudar a fundo essa feature.
4
Entrevista
3) Resource Governor – Esse pode ser utilizado tanto em ambientes de produção como ambientes de teste, imagine o seguinte cenário(bem
comum em desenvolvedoras de Software), Um servidor SQL Server distribuído para todos os desenvolvedores utilizarem para testes,
desenvolvimento etc... Em um banco desses rola de tudo, select *, operações bulk insert, restore de backup, tudo ao mesmo tempo e sempre
tem aqueles “comilões” de recurso que rodam tudo isso ao mesmo tempo J(eu não) , com o Resoruce Governor poderíamos limitar a
quantidade de CPU e memória para que ele não pare o servidor(e toda a empresa) enquanto trabalha.
MC) 1) DMF - Polices no banco de dados, isso é tudo que o DBA sonhava, rs... imagina você, poder manter as regras de nomenclatura sem
precisar criar nenhum artifício na mão ou ter que comprar uma ferramenta para isso, show, assino em baixo desse recurso.
2) Novos recursos de TSQL como declaração de variáveis já recebendo um valor, poder usar na mesma linha a declaração a variável
recebendo um valor e ainda um segunda variável recebendo o valor da primeira, meio complicado ? também achei mais como exemplo: “
Declare @variavel1 int = 10, @variavel2 int = @variavel1 ”.
3) Table Value Parameters, isso é o que todo mundo queria, pelo menos eu, quem já não precisou criar rotinas para receber uma lista e
converter em array na marra ou até mesmo receber um xml , agora é só passar uma tabela no parâmetro e relacionar na procedure…
show…
P) Em relação a performance no SQL Server 2005, quais as features você acha mais importante?
DN) Eu estou sempre puxando a sardinha para o desenvolvimento, então vejo que Stored Procedures e Index são boas praticas para
melhorar a performance de nossas aplicações com SQL Server 2005.
FN) O SQL 2005 comparado com o 2000, tem muitas, mas posso destacar a partition como uma excelente escolha para balanceamento de
carga entre diferentes servidores. Ficou interessado? Procure por Distributed Partitioned Views / Federatad Databases.
MC) Não sei se e a mais importante, mais pelo menos eu acho ser uma das mais importantes (afinal depende de cada caso o nível de
importância do recurso), é a replicação PTP, esse modelo de replicação une o que e de bom da merge com o controle da transacional,
excelente recurso para ou estratégia de recovery ou distribuir a aplicação em vários servidores.
P) Quais suas dicas para um profissional que está iniciando em SQL Server?
DN) Procurar as comunidades MSDN e TechNet, sempre são bons lugares para começar a aprender as tecnologias Microsoft. Os foruns e
grupos de usuários são bons pontos de partidas também. Recomendo o grupo Codificando .NET (www.codificando.net), do qual faço parte :)
FN) Estudar muito e manter-se atualizado, se puder comece com um bom curso oficial Microsoft, caso não seja possível fazer o curso,
existem muitos blogs e sites especializados em SQL Server que na minha opinião tem um conteúdo muito bom e aprofundado em cada área
específica do SQL.qual faço parte :)
MC) Seja em SQL Server, seja em linguagem ou qualquer outra área, qualquer profissional deve estudar as estruturas e aprender a pensar da
maneira mais simples possível, pois se conseguir seguir esse ponto não tem como errar, em qualquer área que seja, pensar em soluções
simples ajuda a criar soluções simples no final das contas, tudo que todos querem e produtividade.
DN) Trabalhar bastante com aquela ferramenta e não parar de estudar as novidades nunca, isso não se aplica somente a SQL, mas a qualquer
área relacionada a tecnologia. As mudanças são muito dinâmicas.
FN) Eu acho que somente com experiência e uma vivência diária de trabalho com o SQL Server o usuário poderá um dia dizer que é um
Master em SQL Server. Mesmo assim tenho certeza que haverão situações em que até mesmo um super usuário terá que recorrer ao velho e
bom senhor do conhecimento, “Pai-Google”.
MC) Primeiro lugar e aprender a ler e entender o books on-line, esse e o melhor material de consulta para o SQL Server, e procurar se
relacionar com outras pessoas trocando informações e experiências sobre diversos problemas, assim, você armazena a maior quantidade de
pré-soluções possíveis, aprendendo a fazer.
5
Entrevista
P) O que é necessário para se tornar um usuário Master em Transact SQL Server?
FN) Encontre uma empresa que tem um banco de dados com mais de 2 mil procedures e 3 mil functions e tabelas com mais de 200 milhões
de registros e comece a tentar otimizar os códigos TSQL. Acredite ou não isso é MUITO comum de se encontrar, já trabalhei em algumas
implementações de DW em diversos banco de dados e já vi alguns desses bancos. Caso não seja possível faça o seguinte, inicie um trace no
profiler e abra a aplicação que roda no banco, comece dar os cliques e fazer as operações comuns do dia a dia dos usuários do software e
depois veja os selects executados por sua aplicação e tente otimizá-los.
MC) Como eu disse antes, pensar simples, e mais ainda aproveitar ao Maximo os recursos internos do SQL Server, e depois que uma rotina
estiver pronta e funcionado voltar nela e tentar deixar–la melhor, e comum quando voltamos ao código antigo e falarmos puxa, porque eu
fiz isso ? etc. Então o processo e um ciclo, fazer funcionar, testar, melhorar, fazer funcionar e assim vai.
DN) Triggers são muito utilizadas para auditoria, no SQL Server 2005 é perfeito! Mas quando nos pedem para auditar muita coisa (muita coisa
mesmo...) a performance é realmente prejudicada... Então, se usar com moderação, é muito bem vinda.
FN) Eu não sou contra o uso de triggers mas tento evitá-las o máximo possível, na minha opinião elas só deixam o código mais complexo e
mais pesado. Eu conversei com o Conor Cunningham(Super Plus Master Boss do time do Query Processor) sobre triggers. Vou deixar 2 links
para meus posts falando sobre Triggers.
1. http://fabianosqlserver.spaces.live.com/Blog/cns!52EFF7477E74CAA6!486.entry
2. http://fabianosqlserver.spaces.live.com/Blog/cns!52EFF7477E74CAA6!488.entry
MC) Trigger, e um procedimento complicado de discutir, e muito útil mais as vezes pode deixar você em maus lençóis, ou seja, bem
administrada ela e boa, não sou contra o uso, sou contra o uso por qualquer coisa, lembram do velho exemplo do estoque? que a tabela de
entrada / saída via trigger atualiza a tabela de produtos, então sua procedure já faz a entrada porque não por ela atualizar a tabela de
produtos? mais simples que deixar uma trigger fazer isso, e seu controle e maior, isso no meu ponto de vista.
P) Qual o maior erro que uma pessoa pode cometer ao analisar um plano de execução?
FN) Sem dúvida é achar que um Index Seek é SEMPRE melhor que um Clustered Index Scan. Ou então ver uma flecha indicando o uso de
paralelismo e logo voltar no código para incluir um OPTION(MAXDOP 1).
MC) O erro mais comum que eu vejo e achar que todo o table scan e ruim, na verdade em alguns casos ele a melhor opção que índices.
DN) Os índices físicos (Clustered) ordenam fisicamente os dados na tabela, são muito bem vindos quando existe bastante busca na base
utilizando a coluna ordenada como filtro. Já os índices lógicos (Non-Clustered) criam uma página de ligação entre os dados físicos
desordenados e o índice ordenado. Uma comparação muito utilizada, para conseguir diferenciar os dois tipos, é lembrar de um Dicionário
cujos dados estão ordenados nas paginas da publicação (idem o index Clustered). E de um livro, no qual existe um sumário informando em
que página está cada informação (igual o index Non-Clustered).
FN) Isso depende bastante de cada cenário, mas eu particularmente uso Int IDENTITY(1,1) para pks e deixo ela como meu índice cluster e os
nonclustered para consultas onde poderei fazer um covered índex, onde o SQL terá que acessar apenas o nonclustered índex para ler toda as
informações necessárias para retornar os dados da consulta.
6
Entrevista
MC) Índice cluster, eu geralmente reservo para campos de valor numérico, int, etc, que sofrem pouca alteração ou nenhuma se possível, que
sejam muito usados no where, para os não cluster eu reservo para os campos que estão relacionados com outras tabelas.
DN) As estatísticas nos ajudam a melhorar as consultas, e deixar o sistema mais rapido... O banco de dados não pode ser um gargalo da
aplicação.
FN) Estatísticas estão a toda hora sendo utilizadas pelo query processor para conseguir gerar o melhor plano de execução para sua consulta.
Por exemplo com os dados das estatísticas o SQL poderá saber se o valor que você está procurando irá retornar 10 ou 10 milhões de linhas,
no caso de 10 milhões caso ele poderia optar por usar paralelismo por exemplo.
MC) O SQL usa elas para determinar o melhor plano, então é fundamental manter atualizada, seja forçando uma recriação de índices ou
simplesmente atualizando elas por períodos espaçados de tempo.
P) O quanto fragmentação no banco de dados pode afetar performance? Existe algum beneficio em ter fragmentação no
banco?
DN) Aqui se encaixa a resposta padrão de um Analista de Sistemas. DEPENDE! rs Tem caso, quando existe muita inserção de dados, que uma
fragmentação de +- 50% nas tabelas ajuda muito na performance. Já tem caso (quando o principal objetivo são consultas) que as fragmentações
atrapalham, porque serão mais paginas que serão lidas quando um resultado for retornado.
FN) Physical fragmentation é quando você tem espaço livre nas páginas da tabela, isso em alguns casos pode ser uma coisa boa, já que irá
evitar que o SQL efetue splits em futuros inserts e updates na tabela. O fillfactor deixa esse espaço livre para você.
b. Logical fragmentation é quando a próxima página lógica não é contínua... Ou seja, o SQL não irá conseguir fazer um read-ahead o que
sempre será ruim. Confesso que fiquei curioso em relação a algum cenário onde esse tipo de fragmentação seria uma coisa boa, entrei em
contato com nada mais nada menos que a Kimberly Trip e para minha surpresa após 1 hora que eu havia enviado o e-mail ela me respondeu
dizendo que ela não via nenhum cenário onde esse tipo de fragmentação poderia ser benéfica, e mais, ela respondeu com cópia para o Paul
Randal perguntando a opinião dele e logo depois ele também respondeu dizendo a mesma coisa. Portanto me fiz por satisfeito com as
respostas
MC) Cara, fragmentação em si não e boa, tenho rotinas que verificam o nível de fragmentação e corrigem isso na demanda. Como tenho uma
boa janela para fazer isso então na pratica mantenho o percentual de fragmentação sob controle.
DN) Na minha opnião, paralelismo é uma boa. Se os sistemas operacionais são multi-thread, porque o SQL Server não pode ser?! Porque
não poderiamos utilizar em uma consulta extremamente pesada mais de um processamento...Trabalhei em uma empresa que executava uma
proc em 15 horas, essa era pesada!
FN) Na minha opinião Paralelismo é bom. O que acontece é que em alguns casos onde temos uma pressão de CPU no servidor e o SQL
optou por fazer uma determinada consulta utilizando paralelismo e depois disso, o servidor recebeu outras requisições que demandavam
muito mais CPU, neste caso a coisa pode ficar feia.
MC) Se seu plano de execução apresenta um alto grau de paralelismo cuidado, pois o custo para o SQL fazer o split e maior do que se
estivesse executando tudo junto, e um ponto que devemos olhar com cuidado.
7
Entrevista
P) Você utiliza alguma ferramenta para auxiliar na resolução de problemas de performance? Quais?
DN) Trabalhando somente no ambiente do SQL Server Management Studio, é possível analisar os planos de execuções/Estatísticas do nosso
banco. Para um começo simples, estas funcionalidades já nos auxiliam a tomar alguma decisão para melhorar o tempo de resposta.
FN) Profiler e SSMS são minha prediletas, as ferramentas de gerenciamento da Idera e da Quest são muito boas, mas é difícil convencer
alguém de que o alto custo delas vale a pena.
MC) Gosto de usar o Profiler, gravando em uma tabela, depois agrupo o uso das procedures mais usadas em ordem de I/O e tempo de
máquina, olho o plano de execução delas uma a uma para ver o que pode ser melhorado, não uso ferramentas especificas gosto de olhar
procedure a procedure mesmo.
DN) Atualmente eu não estou atuando como DBA, estou focado em Desenvolvimento. O que posso dizer é que os Traces Flags são
configurações que variam de ambiente para ambiente...Nos servidores podem haver habilitações ou desabilitações rolando atraves de
TraceFlags.
FN) Sim o 1118 para que o SQL não aloque mais extends mistos e sempre aloque extends uniformes, evitando uma possível contenção na
TempDB que na teoria é a maior utilizada pela controladora SGAM já que as tabelas temporárias casualmente são pequenas.
MC) Não.
P) Cite 3 livros que não podem faltar na coleção de um especialista SQL Server .
FN) Inside SQL Server 2000 e todos da Série Inside Microsoft SQL Server 2005.
P) Nestes anos de experiência, Qual foi o problema mais difícil de resolver que encontrou?
DN) A algum tempo trabalhei em uma multinacional, na ocasião, um sistema era temido por todos...Todo mundo que trabalhava naquele pro-
jeto ficava um tempo e saía da empresa... Comigo não foi diferente, também acabei saindo... Esta aplicação utilizava SQL Server 2000 (Server)
e MSDE (Local) e as procedures eram imensas e com Dynamic-SQL... Tinha proc com mais de 3000 linhas "vermelhas". rs
FN) Com certeza foi na otimização de uma proc com 2500 linhas que como vocês podem imaginar efetuava vários processos super
complexos, depois de muito brigar com ela mudei bastante coisa e no fim deu tudo certo.
MC) Cara não lembro de nada, problemas complicados temos todos os dias isso não se aplica só a mim mais sim a todos que trabalham em
TI, mais complicado que um problema técnico e ter que explicar para alguém o pode e o que não pode ser feito com evidencias e auto grau
de convencimento, problemas da área técnica devem ser encarados com desafio e degrau para evolução continua do conhecimento.
8
Entrevista
P) Já passou por algum daqueles problemas que resolveu mas até hoje não sabe o que era?
DN) Algumas vezes, e tentava não mexer mais depois que arrumava. Vai que quebra de novo!
FN) Direto, e quanto acontece isso faço o seguinte, para tudo, fecha, apaga e começa novamente. Sempre deu certo, mas não me pergunte
qual era o problema.
MC) Já, com o Service Pack 3 do SQL Server, tínhamos uma rotina que exportava textos usando OpenDataSource, depois deste Service Pack
não conseguimos mais fazer a rotina funcionar, na verdade depois nem tentei mais , por achar que não tinha muita lógica fazer isso mesmo,
contornamos usando Bcp e tudo certo ate hoje esta assim, alias acho que esta na hora de rever isso também (rs).
P) Qual o maior banco de dados que já trabalhou e quantas linhas tinha a maior tabela que já viu?
DN) Acho que o maior DB que trabalhei foi em um banco internacional, não tinhamos acesso a muita coisa, e por isso não sei quantas linhas
tinham nas tabelas... Mas posso garantir que inseriamos mais de 100.000 linhas por dia.
FN) O banco de dados de um de nossos clientes, 200 gb e tabelas com mais de 250 milhões de registros, punk. Tem noção do tempo que
demora pra reindexar essa tabela?
MC) Acho que o maior que já vi foi o aqui da empresa mesmo, temos 2 categorias uma voltada a produção que esta hoje com 130gb, com
crescimento semanal de aproximadamente 2-3gb, e os de OLAP que esses sim vão para 220Gb, por conta de manter histórico e tabelas pré
processadas usadas nas tomadas de estratégia da empresa. A minha maior tabela tem 40mm de linhas com crescimento de aproximado de
500 / 600 linhas semana.
DN)
1. Oracle.
2. Merge.
3. Select.
4. O do C. J. Date, indicado anteriormente.
FN)
1. Oracle para Grandes BDs, Firebird contra a Versão Express.
2. Compression.
3. SHUTDOWN WITH NOWAIT
MC)
1. Oracle rodando no UNIX
2. GRID do Oracle (apesar de algumas dúvidas que eu ainda tenho com essa tecnologia, gostaria muito de ter um balanceamento de carga
entre servidores SQL Server , e um sistema de arquivos preparado so para Banco de Dados)
3. SELECT , esse é punk, quando você descobre como usar vê que não tem limites ....
9
Entrevista
P) Você tem algum blog? Site? Msn?... Como os usuários da comunidade podem entrar em contato com você?
DN) No meu site, www.diegonogare.net, tem e-mail, MSN, skype... Só não me acha quem não quiser :)
FN)
E-Mail: fabiano_amorim@bol.com.br
Blog: http://fabianosqlserver.spaces.live.com/blog/
Msn: fabianonevesamorim@hotmail.com
DN) Estudem sempre, todo dia é dia pra aprender. Como diz meu amigo Pedrão [Pedro Castelo Branco], Conhecimento nunca é demais.
FN) “É melhor ser criticado pelos sábios do que ser elogiado pelos insensatos. Elogios vazios são como gravetos atirados em uma fogueira.”
Eclesiastes.
MC) Show de bola a intenção de demonstrar como as pessoas vêem o SQL Server no mercado hoje, logo após a versão 2000 que no meu
ponto de vista já era muito robusto, veio o 2005 começando uma nova era de integração, quebrando o paradigma de que SQL Server e banco
de dados para pequenas empresas, agora somos entendidos e somos vistos como players de mercado com condições para concorrer com
Oracle, DB2, etc... cada um na sua categoria ou ainda melhor todos trabalhando juntos.
Créditos da Entrevista:
As questões desta entrevista foi criada pelo próprio Fabiano Neves, os créditos são todos dele. Infelizmente não conseguiríamos
colocar todos os questionários respondidos na revista, ficaria imensa só com esta sessão. Como o próprio Fabiano Neves me
comentou em uma conversa (que eu concordo plenamente), esta iniciativa é sensacional para os iniciantes em Banco de Dados...
Mostra diversas visões de diferentes profissionais. Recomendo fortemente o blog do Fabiano, é um repositório muito bom sobre
Banco!
10
Utilizando DMVs para diagnóstico no SQL 2005
Introdução
As causas para um problema de lentidão em um banco de dados são muito abrangentes, pois existem muitos pontos relevantes que podem
influenciar em performance. O diagnóstico geralmente exige um monitoramento preciso, onde o mais importante é saber o que monitorar
para não nos perdermos em meio ao grande número de indicadores existentes.
Para este tipo de monitoramento, o SQL Server 2005 nos auxilia com diversas ferramentas como SQL Profiler, os comandos DBCC’s,
contadores no Perfomance Monitor do Windows e também as DMV’s (Dynamic Management Views).
Cada uma das ferramentas nos traz uma gama de informações diferentes que complementam o trabalho de diagnóstico.
Neste artigo iremos ver um pouco mais sobre o uso das DMV’s já que se trata de uma ferramenta inédita em relação a versão 2000 do SQL
Server.
Conhecendo as DMV’s
As DMV’s (Dynamic Management Views) são um dos novos recursos, que podemos utilizar no SQL Server 2005 para gerenciamento do
ambiente.
Atualmente o SQL Server 2005 possui aproximadamente 85 DMV’s, que trazem informações do servidor, banco de dados, transações, índices,
consultas entre outras informações.
Com esta abragência de informações, o trabalho de monitorar e diagnosticar problemas no servidor, fica mais fácil, eficiente além de mais
flexível.
A seguir serão apresentados alguns exemplos de consultas que podem nos auxiliar em alguns diagnósticos, estas consultas com certeza podem
ser alteradas para mostrar outras informações que acharem mais úteis, mas já servem como um ponto de partida.
11
Utilizando DMVs para diagnóstico no SQL 2005
Na hora de otimizar o
desempenho de uma
aplicação o mais
importante é saber por
qual consulta, comando
ou stored procedure
começar, a consulta
abaixo nos ajuda,
dizendo quais são os 100
comandos no banco de
dados que estão exigindo
maior uso de CPU.
Conclusão
Vimos aqui um pouco do potencial da utilização das DMV’s, onde com certeza podemos criar inúmeras outras consultas para continuar nos
ajudando no trabalho de diagnóstico.
A grande vantagem de usar as DMV’s é a possibilidade de criar relatórios para apresentar estes dados de forma mais amigável ou mais prática.
A exemplo disto, a Microsoft disponibilizou gratuitamente o Performance Dashboard Reports, disponível no link http://www.microsoft.com/
downloads/details.aspx?FamilyId=1d3a4a0d-7e0c-4730-8204-e419218c1efc&displaylang=en
Este pacote disponibiliza vários relatórios de performance dentro do dashboard do SQL Management Studio, onde neste caso, os relatórios
utilizam DMV’s para recuperação dos dados, permitindo inclusive ver detalhes dos problemas utilizando drill-downs nos próprios relatórios.
Esta funcionalidade de importar relatórios no Dashboard do SQL Management Studio exige Service Pack 2 do SQL 2005.
Espero que este artigo tenha ajudado vocês a começarem a usar as DMV’s e que vocês consigam criar suas próprias consultas customizadas.
Adriano Luciano Candido (adriano.luciano@gmail.com) é Pós-graduado no MBA em Gestão Projetos da FGV, certificado nos títulos da Microsoft: MCPD,
MCDBA, MCSD.NET, MCSD, MCAD, MCSA. Instrutor oficial Microsoft e consultor especializado em tecnologia Microsoft e em Gestão de Projeto,
atuando a mais de 10 anos no mercado de tecnologia. Palestrante e professor de pós-graduação em diversas universidades de São Paulo. Mantém o site
www.adrianoluciano.net
13
Irei precisar de um disco rígido para executar jogos desenvolvidos com o XNA em um XBox 360?
Sim. O ambiente de execução do XNA Framework requer que um disco rígido esteja presente em seu XBox 360.
14
Juliano Nunes (http://blog.julianonunes.com) é graduando em Ciência da Computação pelo Centro Universitário de Belo Horizonte,
possui certificações MCTS (SharePoint Server 2007 App Development) e MCAD (Web-Based Applications for .Net). Atualmente
trabalha com Análise e Arquitetura de Software, além de atuar como Microsoft Student Partner (Mentor) especialista em ASP.Net e
SQL Server.
15
Lambda
Expressions
Expressão lambda foi adicionada ao Visual Basic 2008 e C# 3.0, com o objetivo de apoiar ”Language Integrated Queries “(LINQ) .Quanto
mais você utilizar a Expressão lambda, mais você verá sua potência e flexibilidade.
A lambda é uma grande inovação da linguagem, mas para você que está iniciando agora como desenvolvedor ou tem pouco tempo com a
linguagem pode parecer bem complicado. Não desanime, pois quando você começar a conhecer mais sobre lambda irá entender o quanto
ela pode ser útil para o seu dia a dia.
Métodos Anônimos
Não poderia falar sobre expressão lambda sem falar de método anônimos que é uma das evoluções existentes no framework 2.0
lançado no final de 2005. Eles podem ser
usados para passar um bloco de código class ShowClassDelegate
para um delegate, de acordo com o {
parâmetro do delegate, também podem delegate void MeuDelegate();
ser utilizados em lugares onde a criação public void EiMetodo()
de um método não é realmente {
necessária.Vejamos abaixo dois MeuDelegate del = new MeuDelegate(ImprimeMensagem);
del();
exemplos, um utilizando delegate e outro
}
utilizando métodos anônimos.
void ImprimeMensagem()
{
Note que não precisamos escrever o
Console.WriteLine("E ai!!");
método ImprimeMensagem, fazemos
}
diretamente. }
No entanto, métodos anônimos tem uma
desvantagem no que diz respeito à
legibilidade. Ele modifica a escrita e o código, por vezes se torna realmente difícil de ler.
class ShowClassComAnonimos Então, se tivermos realmente que fazer alguma coisa que seja fácil de
{ ler, e também simples de usar, é aí que as expressões lambda trabalham
delegate void MeuDelegate(); a nosso favor.
public void EiMetodo() Por isso muitos dizem que as Expressão lambda são uma evolução
{ natural dos Métodos Anônimos.
MeuDelegate delAnonimo = delegate()
{ Expressão lambda?
Console.WriteLine("E ai!!"); O C# 2.0 introduziu o conceito de métodos anônimos, que permitem
}; que blocos de código sejam escritos "em linha" onde delegamos os
delAnonimo(); valores esperados. Assim podemos escrever códigos mais inteligentes e
} com um menor número de linhas.
}
As expressões lambda são muito utilizadas quando escrevemos
métodos anônimos, elas nos permitem trabalhar de uma forma mais inteligente e lógica. Eles também se tornam muito úteis quando
escrevemos expressões LINQ para pesquisa e também podem ser utilizadas em funções, como anteriormente já comentadas
conseguimos escrever funções muito mais enxutas.
16
Lambda
Expressions
Criamos uma Lambda desta forma (parametro { =>} o que teremos de retorno),
onde o “=>” e o operador e o que vem a antes dele é o parâmetro e após, o retorno. private bool Emaiorq10(int i)
{
Vamos dizer que queremos uma função que irá receber um inteiro, e irá retornar se o
if (i > 10)
inteiro é superior a 10.
return true;
else
A mesma função pode ser escrita como uma expressão lambda, em uma
return false;
linha.
}
(int i => i > 10); A Expressão lambda faz o mesmo trabalho como a
função acima. O mais interessante é que podemos escrever isso em apenas uma linha.
Agora vamos criar uma classe para que possamos exemplificar melhor a Expressão lambda, como disse anteriormente ela é muito
utilizada em consultas LINQ que é o que veremos a seguir:
public class Carros Agora vou construir e popular minha Classe de Carros.
{
public string Marca { get; set; } PS: Se você ainda não está familiarizado com o C# 3.0 deve estar estranhando
public string Modelo { get; set; } a criação das propriedades com os gets e sets direto e também a da Lista de
public int Ano { get; set; } carros populando direto no construtor sem antes ter criado um construtor
para fazer isso. Pois bem, “seja bem-vindo”, essas são apenas duas de muitas
} novidades da linguagem, mas isto é assunto para o próximo artigo.
Eu mostrei como criar e instanciar um List<Carro> já passando os valores,
agora vou utilizar alguns métodos chamados métodos estendidos no
Pra finalizar, um filtro utilizando o Contains que funciona como o Like do SQL e um OrderBy para ordenar o resultado pelo ano.
Bem pessoal espero ter passado o conceito básico da Expressão lambda, agora é só você se aprofundar e colocar em prática mais uma
das novidades do C# e Visual Basic .NET 9.
Bons Códigos...
Fabiano Belmonte é Senior Architect da InfoMoney.com, especialista em aplicações e-Business com larga experiência em B2B (Submarino.Com e
Saraiva.Com). Trabalha há 5 anos com a tecnologia .Net, aplicando conhecimentos nas diversas áreas: instituições financeiras (sistema SPB), e-
Commerce, gerenciamento logístico entre outras. Trabalhando com Visual Studio desde suas primeiras versões, responsável pela implementação de
uma Metodologia de trabalho e melhoras significativas no resultados e na qualidade do time de Desenvolvimento de muitas empresas por onde
passou como (Saraiva.Com) e ferramentas como TFS (Team Foundation Server).
Foi palestrante em eventos como Codificando. NET 2008 e outros eventos sobre Tecnologia .NET.
Instrutor da e-TNIAX Group especialista em C#, ASP.NET e Silverlight. www.etniax.com.br
18
Visual Studio Team System. Experimente! Vale a pena!
Quem está sempre por aqui, com certeza já leu sobre Team System. E quem já leu e/ou já teve contato com o sistema sabe das grandes
vantagens que ele traz mas, e quem não conhece o Team System?
Eu era um no meio dessa multidão há algum tempo atrás, e me lembro muito bem do primeiro contato. Um desenvolvedor chegando numa
nova empresa. Sistema novo para cuidar, metodologias diferentes e o Team System, há pouco tempo implantado na empresa.
O idealizador do Team Sistem na corporação foi o responsável por me integrar ao sistema e me passar os conhecimentos necessários para
lidar com ele no dia-a-dia. Para um desenvolvedor que mal tinha um sistema de controle de versões na empresa anterior, foi um impacto e
tanto.
Work Items, Políticas de Check-in, Testes unitários, builds integradas, entre outras coisas. Um conjunto de features que aos poucos foram me
chamando a atenção pela produtividade e controle do projeto que elas traziam. Alguns desenvolvedores podem ter uma reação diferente ao
começar a lidar com o TS, que costuma ser o sentimento de ser mais monitorado, assistido, mas não é bem assim.
Partindo para o principal ponto dessa história, meu ciclo nessa empresa não foi muito duradouro. Ingressei em outra empresa, que não tinha
uma metodologia de desenvolvimento definida, nenhum padrão. Team System? Negativo. Ferramentas eram Visual Studio 2005 integrado ao
Source Safe. Alguém que conheceu o Team System, recebia work items com casos de uso publicados no Sharepoint sentiu um impacto muito
maior do que quando conheceu o TS. Não durou duas semanas até eu me manifestar. Sentia que a produtividade na equipe poderia ser muito
maior. Tinhamos um bom time numa boa empresa, porém sem ferramentas adequadas para trabalhar.
Uma boa dica para quem quer começar a lidar com o Team Foundation Server é baixar a máquina de Trial que, na época em que baixei, tinha
quase 6 meses de duração. A que estou usando dura até dezembro deste ano. Para quem tem interesse, aí vai o link: http://
www.microsoft.com/downloads/details.aspx?FamilyID=c7a809d8-8c9f-439f-8147-948bc6957812&displaylang=en
Foi ele mesmo quem comecei a usar como ferramenta para tentar convencer gerentes e diretores de que ele é a melhor solução. Nele você
pode mexer sem medo. É uma máquina virtual que pode rodar sob tanto Virtual PC quanto Virtual Server. Antes de dar o kick off nos testes
dentro da empresa, rodei ele no meu computador usando Virtual PC. Criei projetos, personalizei metodologia (na ocasião MSF for Agile),
work item tracking, grupos de usuários, entre outros. O mais interessante é que o modo do disco permite fazer um “undo” nas modificações
realizadas, o que te traz uma segurança a mais.
Depois de mais familiarizado com o lado “server” do Team System, me sentia mais seguro para instalar esse mesmo servidor numa máquina
com Virtual Server na empresa. Como recursos não eram muitos e consegui apoio do gerente para fazer esse laboratório, usamos da máquina
dele para instalar uma primeira versão desse servidor. Ele cedeu 1 dos 2 GB de memória que ele tinha na máquina para que o TFS rodasse
para testes. Generoso!
Colocamos 2 projetos de testes no TFS para trabalharmos sobre ele. Eram projetos internos, que estavam acontecendo nos vales entre
projetos, sem vínculo nenhum com nossos clientes. Não é nem um pouco recomendado usar projetos de clientes para fazer testes =)
Reports começaram a ser populados; uma melhor visão do projeto começou a ser mensurada; desenvolvedores começaram a ter contato
com o TS e perceberam que não é o bicho papão que imaginavam; um ciclo mais organizado começou a ser percebido no projeto; um melhor
controle do trabalho já realizado e do remanescente começou a ser visto por todos, entre outras coisas que me deixam confiante para que o
Team System seja finalmente homologado pela empresa.
Hoje esse projeto anda com muita tranquilidade e em paralelo a projetos que estão fora do Team System, o que me dá poder para poder
fazer comparações que vão me ajudar a convencer quem devo convencer. Tenho que dizer que todo o esforço, a briga contra as limitações de
infra e software, entre outros problemas, está sendo recompensado, mesmo que ainda não seja por completo, mas já está sendo muito
prazeiroso voltar a trabalhar com o Team System, ainda mais sendo do outro lado do gerenciamento do projeto.
Aos que se interessam em ingressar na mesma maratona em que estou atualmente, abaixo estão alguns links que me ajudaram muito:
Forum MSDN de TS: http://forums.microsoft.com/MSDN/default.aspx?ForumGroupID=5&SiteID=1
Library MSDN de TS: http://msdn.microsoft.com/en-us/library/fda2bad5.aspx
Ricardo Serradas (ricardo.net@live.com) é Bacharel em Ciência da Computação e Arquiteto de Software. Atualmente trabalha como "Team Leader" na
Spread Systems (www.spread.com.br - Microsoft Gold Partner) com Visual Studio Team System, Team Foundation Server e Metodologias Ágeis em seus
projetos. Pode ser contactado no blog http://enterprisebrothers.wordpress.com/
RECORDAR É VIVER!
Plataforma de desenvolvimento
Como podemos perceber realmente
grande parte dos usuários da Internet
utilizam de alguma forma algum
produto ou serviço Windows Live.
Sabendo-se disso, porque não trazer
para dentro de nossas aplicações, seja
ela Web, Windows ou Mobile, recursos que os usuários já estão acostumados ou ainda desenvolver nossas próprias aplicações
baseadas nessas já existentes?
A Plataforma Windows Live se propõe justamente a isso, permitir que designers, desenvolvedores e entusiastas criem aplicações
sofisticadas baseadas nessa gama de serviços. A plataforma Windows Live foi construída em torno de uma arquitetura simples de
identidade e autenticação e regida por termos simples e consistentes.
Find e Locate
Live Search
Você pode facilmente adicionar um sistema de busca para o seu site com o Live Search Box e caso queira mais opções
de customização pode usar o Live Search Web Services onde você será capaz buscar resultados da Web, imagens,
noticias, feeds e metatags de maneira programática.
Virtual Earth
Virtual Earth é um conjunto integrado de serviços que possibilita a você desenvolver experiências online dinâmicas
através de mapas e uma biblioteca de imagens Geo-Espaciais. Você ainda pode usufruir de mapas em três dimensões,
modelo de visualização “Bird’s Eyes” e tudo isso com uma resolução altíssima.
Identity
Windows Live ID
Windows Live ID é o sistema de identidade e autenticação oferecido pela plataforma Live (o antigo passaport
network), este sistema é utilizado por todos os serviços e produtos Windows Live que requerem autenticação,
atualmente existem mais de 300 milhões de usuários com um Live ID, 35 milhões só no Brasil. A titulo de
curiosidade, por dia nos servidores da Microsoft são feitas cerca de um bilhão de autenticações.
User Data
Contacts
Windows Live Contacts permite que pessoas tenham acesso as suas informações de contato (incluindo dados de
contatos do hotmail, Messenger e contatos de dispositivos móveis) em seus sites (com total segurança e privacidade).
Podemos então construir sites com conceitos de redes sociais.
Photos
Armazene e acesse fotos de usuários Windows Live. A API permite aos usuários delegar permissões para sites de
terceiros terem acesso de leitura ou leitura/escrita em seus álbuns de fotos armazenados dentro do Windows Live
Spaces.
22
Introdução a plataforma Windows Live
App Storage
Armazene dados de configurações de usuários do seu site. Essa API permite que desenvolvedores armazene pequenas quantidades de
informações de configurações/estado de seus usuários nos data centers da Microsoft .
Messenger
Permita que visitantes de seu site interajam com os usuários do Windows Live Messenger através do Windows Live
Messenger Library, Windows Live Messenger IM Control e o Windows Live Presence API.
Alerts
Permita que usuários do seu site recebam alertas em seu desktop, dispositivos móveis ou email. Windows Live Alerts
automaticamente detecta onde os clientes estão na rede e de maneira inteligente envia o alerta para o local
apropriado.
Agents
Crie robôs para sua empresa ou produto. Através do Messenger você pode disponibilizar um meio automático de
prover informações para seus clientes. Agents usam uma linguagem natural na conversação permitindo uma interação
muito boa com os usuários.
Infrastructure
Admin Center
Windows Live Admin Center é um serviço de customização que permite a você personalizar e estender sua
experiência no ambiente Live, com opções ilimitadas de e-mail e um fácil gerenciamento de domínios.
Silverlight Streaming
Silverlight Streaming é um serviço que torna fácil a disponibilização de rich media silverlight. O serviço oferece de
modo gratuito uma solução para hosting e streaming de aplicações silverlight.
Naturalmente, existem mais opções dentro da plataforma (veja mais em http://dev.live.com), mas já podemos ver a
grande maioria das possibilidades que nós temos trabalhando com a plataforma Windows Live.
23
Introdução a plataforma Windows Live
WL tools para o Visual Studio 2008 é um conjunto de controles que incorpora serviços Windows Live
facilmente em nossas aplicações Web. Faça o Download aqui (http://www.microsoft.com/downloads/
details.aspx?FamilyId=D7C6DF11-2283-4CAC-9723-172F5C33EFBB&displaylang=en)
Como podemos ver na figura ao lado, uma grande variedade de controles já está integrada com o
Visual Studio 2008. Ou seja, se você é um desenvolvedor ASP.NET, pode usufruir ainda desse beneficio.
Windows Live Quick Apps
A fim de facilitar o aprendizado dos interessados, a Microsoft disponibiliza para os desenvolvedores
uma série de aplicações de exemplo que utilizam os mais variados serviços (API’s e SDK’s) da
plataforma Windows Live. Acesse o link http://dev.live.com/quickapps/default.aspx e veja as inúmeras
possibilidades de desenvolvimento.
Conclusão
Como podemos ver, a plataforma Windows Live é algo enorme e que merece um estudo mais intenso
por parte dos desenvolvedores. A computação cada dia mais tende para um ambiente de nuvem (cloud
services) e a plataforma Windows Live realmente tem muitos serviços e produtos interessantes. Minha
intenção com este artigo foi mostrar-lhes algo que para muitos ainda era desconhecido. Pretendo em
breve disponibilizar artigos mais específicos sobre cada um dos temas abordados aqui hoje. Qualquer
dúvida, crítica ou sugestão fale comigo: cleberwd@hotmail.com
Cleber Dantas (cleberwd@hotmail.com) Ministra palestras e mini-cursos, MSP (Microsoft Student Partner), MCAD (Microsoft Certified Application
Developer) e MCTS (Microsoft certified Technology Specialist). Membro do comitê Web/Infra do INETA Brasil (International .NET Association),
colaborador do Portal Linha de código e IMasters. Trabalha com a plataforma .NET desde 2003
24
O mercado hoje já está consolidado com os padrões disponíveis que já oferecem ampla segurança do ponto de vista de tecnologia. Agora
chegou o momento de usar a tecnologia para facilitar não
somente a codificação, mas incorporar todo o ciclo de
desenvolvimento, pois só assim será possível alcançar um
produto com qualidade no prazo e no tempo exigido pelo
mercado desviando dos já conhecidos problemas ligados aos
casos de insucesso na entrega de projetos de software tão
relatados em diversas pesquisas realizadas pelo Standish
Group (www.standishgroup.com) sobre o histórico dos
projetos ao longo dos últimos 10 anos conforme você pode
ver na figura 01 onde apenas cerca de 30% dos projetos são
considerados sucesso.
Com foco nessa grande demanda do mercado pela profissionalização do ciclo de desenvolvimento que desde 2005 a Microsoft passou a
investir no mercado de Application Lifecycle Management (ALM) com o lançamento da plataforma de Visual Studio Team System (VSTS).
A plataforma do Visual Studio Team System (VSTS) é ofertada como uma solução baseada em um conjunto de produtos que juntos trabalham
juntos e integrados para proporcionar a gestão do ciclo de vida de uma aplicação, oferecendo suporte para todo o ciclo de desenvolvimento
envolvendo todas as áreas e papéis relacionados em um projeto de software tais como:
Gestão
Negócios
Analise
Arquitetura (Software / Infra estrutura)
Desenvolvimento
Banco de dados
Qualidade
Com uma solução integrada oferecida pelo Team System você terá os mecanismos necessários para vencer os principais desafios em um
projeto de software como: colaboração, qualidade, prazos e acompanhamento.
Com o modelo de gestão para o ciclo de desenvolvimento oferecido pelo Visual Studio Team System que trabalha em conjunto com a sua
metodologia de desenvolvimento você terá mais um grande aliado no seu projeto possibilitando de forma integrada grandes resultados que
são muito difíceis de se alcançar de forma manual devido aos diversos desafios no dia a dia desenvolvendo software.
25
Para ter resultados numa plataforma de ALM é necessário projetar a implantação pensando em todo o ciclo de desenvolvimento do seu
projeto de forma que possa usar a plataforma de forma estratégica e tenha total aderência com as características do seu projeto.
Nos últimos 12 meses tenho tido uma grande oportunidade de conversar com um grande número de clientes e avaliar seu processo de
desenvolvimento para alinharmos uma estratégia de implantação do Visual Studio Team System onde estamos tendo um índice de satisfação
de 100% ou mais se fosse possível registrar. O grande falto que quero registrar é que o VSTS oferece um modelo sólido para os mais variados
tamanhos de projetos permitindo criar uma personalização para atender clientes pequenos, médios e grandes respeitando as diferenças de
cada cliente.
Eu me recordo de um cliente que relatou que conseguimos provocar “lágrimas” nós olhos dele pela tamanha satisfação e alcance de seus
objetivos. Comentou ainda que por diversas vezes avaliou diversas soluções mas nenhuma chegou tão próximo do seu modelo de negócio
como o Visual Studio Team System.
Próximos passos
Conhecer mais da plataforma do Visual Studio Team System sempre procurando relacionar com as necessidades do dia a dia do seu projeto. É
muito importante fazer um levantamento interno em interno em seu projeto de como o mesmo está hoje e quais serão os passos nos
próximos anos. Perguntas simples conforme o pequeno questionário abaixo já pode ser o primeiro passo:
Existem planos de novos projetos, migração de projetos antigos e contratação de mais profissionais?
Considerações finais
Investir em uma plataforma de Application Lifecycle Management como o Visual Studio Team System só vem a potêncializar o
desenvolvimento de seus projetos pelo grande número de recursos oferecidos destinados a gestão estratégica e colaboração. Com um
modelo simplificado de trabalhado você terá a disposição grandes resultados e uma aderência do seu modelo de trabalho. Enxergue hoje o
VSTS como a plataforma base para todos os projetos de software independente da tecnologia utilizada de forma a permitir um único modelo
de gestão em todo seu ciclo de desenvolvimento.
Ramon Durães é MVP, consultor Sênior com larga experiência em desenvolvimento de software usando plataforma Microsoft. Trabalha atualmente como
Software Engineer na 2pc Professional Consulting (http://www.2pc.com.br) coordenando a área de consultoria trabalhando com empresas ligadas ao
desenvolvimento de software fornecendo capacitação na migração para .NET, consultoria em arquitetura de software e implantação de Visual Studio
Team System. Palestrante nos principais eventos da Microsoft no Brasil (Teched 2005, Teched 2006, TechEd 2007, 2008), Microsoft Innovation Days
2007 (Salvador, Brasília, Recife, Goiânia, Natal, Maringá) e outros eventos regionais promovidos por grupos de usuários. Pode ser encontrado em seu blog
http://blogs.2pc.com.br/ramonduraes.
30
DMF - Declarative Management Framework no SQL Server 2008
O Declarative Management Framework [DMF] é uma ferramenta nativa que integra o pacote de novas soluções do SQL Server 2008 e se
propõe a auxiliar na criação de padrões e políticas de utilização do banco de dados, seguindo padrões definidos pela equipe que gerencia o
SQL Server na empresa. Após sua configuração, o desenvolvimento passa a seguir as regras estabelecidas e caso algum ponto seja diferente do
que foi configurado, o Database Engine não permite que o script seja concluído e exibe uma mensagem dizendo que as regras foram violadas e
que a transação sofrerá um rollback.
Estas políticas são completamente flexíveis e adaptáveis a cada empresa, por exemplo, é possível definir o padrão de nomes dos objetos do
banco, definir uma obrigatoriedade de schema ou usuário, ou especificar que algum objeto que não pode ser utilizado em determinadas
situações... Estas normas geralmente são definidas pela equipe de Database Administrator [DBA] e a utilização é feita pelos Database
Developers [DBD]. Mas nada impede que outros papéis configurem e utilizem o banco e as políticas implantadas.
Um dos pontos fortes desta ferramenta é a possibilidade da replicação das políticas criada no Declarative Management Framework para todo
o parque de servidores, selecionando os servidores que sofrerão as alterações, deixando a administração para todos os servidores
especificados com a mesma política. E caso seja feita uma alteração em alguma regra da política, todos os servidores que estiverem sob aquela
configuração, automaticamente sofrerão as alterações e passarão a seguir as novas regras.
É possível tomar conhecimento de algum procedimento que infringiu as políticas, também configuradas por atitudes e ações. O SQL Server
permite configurar o DMF para enviar um e-mail para o DBA, por exemplo, quando algum DBD criar uma tabela fora dos padrões de
nomenclatura, ou criar um usuário que foi atribuído ao perfil de S.A. no banco. Tudo isso configurado através do DMF e replicado para
quantos servidores forem necessários.
Antes de partir para o exemplo da criação de algumas políticas, vale a pena entender o que
significa os itens que serão trabalhados no DMF do SQL Server 2008, e para explicar estes
itens, vamos até a parte inicial do DMF. Veja na Figura 1, os itens que serão explicados.
Conecte-se no Banco de Dados, abra a Object Explorer (View >> Object Explorer) vá até
o menu Management e expanda suas opções. O DMF está dentro de Policy Management.
São os três itens do menu.
Policies: Pode-se entender que as policies são as políticas aplicadas, baseadas nas condições
(conditions) e nos objetos (facet).
Facet: Os facets são os objetos de banco de dados que vamos trabalhar. Quando os facets
forem expandidos, será possível encontrar vários nomes já conhecidos como Table, Login,
Schema, e vários outros... Representado praticamente todos os objetos possíveis de banco
de dados.
Agora que já vimos o que são cada um dos grupos de configuração do DMF, vamos montar uma política de exemplo.
No exemplo, vamos criar uma política de nomenclatura para as tabelas. São dois caminhos que
podem ser seguidos:
1) Começaremos escolhendo qual será o objeto (facet) que terá nossa política. Neste caso será
Table. Clique com o botão direito em cima de Table e aponte o mouse para New Condition. Veja a
Figura 2.
31
DMF - Declarative Management Framework no SQL Server 2008
2) Ir diretamente em Conditions, e criar uma nova condição. Clicando com o botão direito
e selecionando New Condition. Veja a Figura 3.
Em ambos os casos o resultado será o mesmo, a única diferença é que pela primeira opção
o facet já está selecionado, e pela segunda opção, será necessário escolher qual será o
facet. Mas isso não muda nada no final. Vamos utilizar o exemplo da segunda opção, para
selecionarmos o facet manualmente.
Após clicar em New Condition, a tela de criação de condições será apresentada, e o
primeiro campo que é solicitado o preenchimento é o campo Name, que será o nome de
identificação desta política.
Neste passo será criada uma política para os nomes de objetos. Vamos adicionar as duas
condições criadas, e fazer alguns testes. Para isso, clique com o botão direito do mouse em Policy
e vá em New Policy, uma tela de criação de
políticas será aberta. Veja a Figura 7 o menu.
33
DMF - Declarative Management Framework no SQL Server 2008
Nesta tela será adicionado o
nome da política, e qual
condition ela utilizará. É possível
restringir algum servidor para
não ter esta política aplicada,
para isso, será necessário criar
uma condition utilizando a facet
“Server”.
O nome desta política é o
mesmo da condition de tabela,
Nomenclatura de Tabela, que
precisa ser colocado no campo
Name. Na comboBox de Check
Condition escolha a opção
Nomenclatura de Tabela, que é
onde esta política atuará.
Novamente, é possível
selecionar algum servidor ou
banco de dados que não terão
estas políticas, mas isso gera
material para outro artigo
futuro. Tenha certeza que o
item Evaluation Mode esteja
marcado como On Demand,
que executará a política sempre
que algum objeto do Facet for
alterado. Acompanhe na Figura 8
a tela de novas políticas.
Não será criada uma política
para validar os nomes de Stored
Procedures, a intenção de criar
a Condition de Procs foi para
mostrar a funcionalidade de
adicionar quatro expressões ao
invés de somente uma, como apresentado no primeiro exemplo.
Após criar a política, o menu de Policy será apresentado com o item existente.
Veja este item na Figura 9.
34
DMF - Declarative Management Framework no SQL Server 2008
Agora que a política está criada é possível testar, para isso, clique com o botão direito do
mouse na política criada e aponte para Evaluate. Este item está apresentado na Figura 10.
Ao clicar neste item, a política é executada com base nas condições existentes e seus facets
correspondentes. A tela que é apresentada, mostra os detalhes do que foi executado, o que
está dentro das normas estabelecidas, ou o que não está. Os itens analisados que são
satisfatórios ficam assinalados com um “check” verde, e os itens que não foram aprovados
pela analise do DMF, fica assinalado com uma cruz vermelha. Acompanhe a Figura 11 estes
itens aprovados e reprovados.
Com isso, fechamos mais um artigo sobre o SQL Server 2008, e espero que tenha sido útil e informativo para vocês.
Até o próximo.
Diego Nogare é graduado em Ciência da Computação, Pós-Graduado em Engenharia de Computação com ênfase em Desenvolvimento Web com .NET.
Colaborador do Portal Linha de Código e da revista SQL Magazine, co-Líder do grupo de usuários Codificando .NET, Líder dos Microsoft Student Partners
[MSP] de São Paulo e Microsoft Most Valuable Professional [MVP] em SQL Server, possui certificações MCP e MCTS em SQL Server 2005, é palestrante
em eventos da Microsoft, Codificando .NET e INETA BR, mantém o site: www.diegonogare.net
36
Diversão
O Saldanha possui um dos maiores lanches de São
Paulo. Com sede em Suzano e filial em Poá, esta
lanchonete (com delivery) atende a galera de toda a
região do alto tiete. Sem brincadeira, o lanche de lá
vai de 900Gr a 2,5Kg... Quatro pessoas normais
conseguem comer tranqüilo... O Facunte comeria
1/2 lanche sozinho, mas ele não é uma pessoa
normal. :) Reparem a latinha de coca-cola ao fundo.
O preço de lanche varia pelo recheio e tamanho,
mas os lanches comuns são na faixa de R$ 15,00.
Blogs:
Pakua FeedCenter: http://feedcenter.pakua-it.com/
Sites Recomendados:
PodCast
Há algum tempo, a escolha do tipo de aplicação vem se tornando uma missão cada vez mais difícil, isso devido ao
aumento das possibilidades e tipos de aplicativos que podemos desenvolver... Até alguns anos atrás poderíamos
escolher entre: Windows ou Web... E mais antigamente ainda: Windows.
Enfim, hoje temos uma gama muito forte e dentro de cada cenário de arquitetura temos ainda subtipos que podemos
escolher, o que parece ser bom acaba sendo um problema... É algo parecido com a seleção brasileira. Temos os
melhores atacantes do mundo, mas quando juntamos os quatro melhores nem sempre dá certo.
Vamos a um exemplo prático: podemos desenvolver soluções Web hoje utilizando o tradicional ASP ou Silverlight... É
uma grande dúvida já saber qual escolher... Hoje em aplicações Windows passamos por uma situação parecida... O
tradicional Windows Forms ou WPF?
Não existe melhor, nem pior, nem mais indicado... Costumo dizer que para cada cenário uma arquitetura acaba sendo
a melhor, o grande problema é que grande parte das vezes, a melhor solução parece ser tão clara que escolhemos uma
determinada arquitetura sem pensar... Já vi muito coisa por ai, que parecia óbvio, mas no final foi um erro de
arquitetura absurda...
As lições que aprendi foram:
Olhar todas as possibilidades antes da escolha;
Entender 100% as regras de negócio e hardware antes da escolha;
Não aceitar que o cliente escolha a arquitetura “Eu quero um sistema Web de cadastro”. Ele definiu ser Web
antes mesmo de falar o que era;
Ouvir opiniões externas sobre a proposta;
Montar um documento explicando o cenário atual e o cenário proposto deixando claro Arquitetura/
Funcionalidades/Requisitos.
Alexandre Tarifa é MVP Visual Developer Visual Basic .Net, bacharel/pós graduado em Ciência da Computação, trabalha em diversos
projetos. Tem participado de diversos projetos que começam como Web e terminam com Smart Client.
Especialista .Net e Líder de Projetos na ITGROUP (www.itgroup.com.br), editor da revista Codificando e-Magazine e fanático torcedor do
São Paulo Futebol Clube. Blog: www.vstsrocks.com.br/alexandretarifa.