Anda di halaman 1dari 38

Codificando Net

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.

P) O que é necessário para se tornar um usuário Master em SQL Server?

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?

DN) Mesma resposta que a 4.

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.

P) Qual sua opinião em relação ao uso excessivo de Triggers no banco de dados?

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?

DN) Um novato pode não se atentar a um "simples e inofensivo" TableScan.

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.

P) Quando usar um Clustered Index e quando usar um Non Clustered Index?

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.

P) Porque estatísticas são importantes?

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.

P) Afinal paralelismo é bom ou ruim?

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.

P) Em um banco de dados em produção você utiliza algum TraceFlag habilitado?

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 .

DN) Introdução a Sistemas de Bancos de Dados - Ed. Campus


SQL Server 2005 - Implementation and Maintenance Self-Paced Training Kit - Ed. Microsoft Press.
Eu utilizo estes dois livros frequentemente, para preparar material e tirar dúvidas. Vou ficar devendo o terceiro livro (são vários candidatos a
esta vaga, rs) que com certeza é da Microsoft Press.

FN) Inside SQL Server 2000 e todos da Série Inside Microsoft SQL Server 2005.

MC) Das antigas: Inside SQL Server 2000, , Kalen Sousa


Mais novos: Inside Microsoft SQL Server 2005: T-SQL Querying, ( Ben-Gan, Itzik / Kollar , Lubor / Sarka, Dejan ) e SQL Pocket Guide,
(Gennick, Jonathan )

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.

P) Como diria o Tobby(charges.com.br) - Bate bola jogo rápido:


1. Um concorrente digno do SQL Server:
2. Uma feature:
3. Um comando SQL(o meu predileto é o SHUTDOWN WITH NOWAIT) :
4. Um livro:

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

MC) Email e msn : mcolla@bol.com.br

P) Deseja deixar alguma consideração final?

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.

As DMV’s estão separadas em grupos como segue:

No link http://www.microsoft.com/downloads/details.aspx?familyid=2EC9E842-40BE-4321-9B56-92FD3860FB32&displaylang=en vocês podem


baixar gratuitamente e conhecer o modelo de dados com todas as views de sistemas do SQL Server 2005, incluindo as DMV’s. Vale a pena
dar uma olhada.

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

Transações em WAIT (aguardando liberação de recursos)

Um sistema de banco de dados de


aplicações mal projetadas ou não
otimizadas pode fazer com que as
transações aguardem por muito tempo
a liberação de recursos já bloqueados
(tabela, índices, registros, etc.) por
outras transações, ocasionando assim
lentidão no tempo total de execução
das transações.
A consulta abaixo exibe todas as
transações que estão aguardando por
liberação de recursos mostrando
principalmente o tempo de aguardo e
qual sessão está bloqueando o recurso
exigido.

Comando com maior


uso de CPU

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.

Comando com maior acesso de


memória

Tem o mesmo objetivo da consulta


anterior, porém nos trás a visão por
memória utilizada.
12
Utilizando DMVs para diagnóstico no SQL 2005

Comando com maior leitura


de disco

Tem o mesmo objetivo da


consulta anterior, porém nos trás
a visão por maior quantidade de
leitura de disco.

Índices com fragmentação

A fragmentação é um dos motivos


do aumento do número de leituras
em uma consulta, diminuindo
conseqüente a performance.
Apenas tome cuidado em julgar o
resultado apresentando, pois a
fragmentação apesar de ser uma
grande vilã para consultas, é muita
vantajosa para tabelas com muita
atualização.

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

Afinal, o que é XNA framework?


Assim como eu, algumas pessoas podem estar um pouco perdidas neste monte de novas tecnologias. E uma delas é o XNA
Framework, que eu confesso que nem sabia direito o que era, mas vamos esclarecer as coisas.

O que é o XNA Framework?


XNA Framework é um conjunto de bibliotecas de código gerenciado (.Net) baseado no .Net Framework 2.0. O XNA
Framework permite aos desenvolvedores de jogos criarem modernos jogos utilizando a linguagem de programação C# e um
rico conjunto de bibliotecas de desenvolvimento. O XNA Framework facilita a inclusão de conteúdo rico (3D, 2D, som, etc)
em um jogo. O XNA Framework também fornece uma grande unificação das APIs entre as implementações para Windows
e para o XBox 360, eliminando custo e esforços requeridos na conversão de jogos entre as duas plataformas.

Qual a diferença entre .Net Framework e XNA Framework?


A diferença principal está no fato de que o XNA Framework é otimizado para o desenvolvimento e execução de jogos. Mas
elementos como as class libraries e o Common Language Runtime, estão presentes em ambas.

O que é o XNA Game Studio Express?


XNA Game Studio Express é um conjunto de ferramentas baseado no Visual C# 2005 Express, tendo como público-alvo os
estudantes e desenvolvedores de jogos por hobby. O XNA Game Studio permite desenvolvimento tanto para Windows
quanto para a plataforma XBox 360.

Eu posso desenvolver um jogo comercial para XBox 360?


Com o XNA Framework e o XNA Game Studio Express, você consegue desenvolver jogos para Windows e XBox 360 mais
facilmente. Estes jogos serão limitados à cenarios não-comerciais quando desenvolvidos para XBox 360 utilizando XNA
Game Studio Express, entretanto, você pode desenvolver jogos comerciais para Windows utilizando o XNA Framework e o
XNA Game Studio.

Quanto custará o XNA Game Studio Express e o XNA Framework?


As ferramentas de desenvolvimento (XNA Game Studio Express) e o ambiente de execução (XNA Framework)
serão completamente gratuitos. Porém, para desenvolver, debugar e/ou executar jogos no XBox 360, lhe exigirá a aquisição
de uma "XNA Creator's Club subscription", através de uma das duas formas disponíveis. Pagamento anual de 99 dólares ou
trimestral de 49 dólares.

O XNA Framework está disponível também para outras plataformas?


Até o momento atual o XNA Framework só estará disponível para Windows e XBox 360.

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

Afinal, o que é XNA framework?


Eu posso criar outros tipos de aplicações que não-jogos usando XNA Framework?
No Windows isto é possível, mas o primeiro release para XBox 360 é aprimorado para escrita de jogos.

E o que acontecerá com o Managed DirectX (MDX) 1.1?


MDX 1.1 está em um modo sustentável, e não terá novas funções incluídas a ele mais. Se você possui um cenário de jogos
que só está presente no MDX 1.1, contate a Microsoft que eles irão considerar para a elaboração do XNA Framework.

Como o XNA Framework irá suportar áudio?


O XNA Framework irá fornecer suporte à execução de áudio através de "managed XACT".

O XNA Framework suporta XINPUT ou DirectInput?


O XNA Framework irá fornecer suporte a todos dispositivos de entrada através de "managed "XINPUT".

O XNA Framework irá substituir meu .Net Framework?


Não. O XNA Framework não irá substituir ou interferir em sua instalação atual

Em caso de dúvidas, poste aqui a sua questão que ajudarei a solucioná-la.


Mais detalhes em: http://msdn.microsoft.com/directx/xna/faq/

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

List<Carro> Carros = new List<Carro>


{ new Carro { Modelo = "Astra", Marca="Chevrolet", Ano=2005},
new Carro { Modelo = "Corsa", Marca="Chevrolet", Ano=2004},
new Carro { Modelo = "Stilo", Marca="FIAT", Ano=2008},
new Carro { Modelo = "Doblo", Marca="FIAT", Ano=2006},
new Carro { Modelo = "Escort", Marca= "Ford", Ano=2000},
new Carro { Modelo = "Explorer", Marca="Ford", Ano=2007} };

namespace LINQ onde podemos fazer consultas em coleções.


Note que o (p =>) é Expressão lambda, que no primeiro exemplo especifica um filtro para a Marca “FIAT” em seguida utilizamos uma
lambda a partir do Objeto Carro para calcular a média. A partir daí podemos explorar vários exemplos de utilização.

var Resultado = Carros.Where(p => p.Marca == "FIAT");


var Resultado1 = Carros.Average(p => p.Ano);
17
Lambda
Expressions

Pra finalizar, um filtro utilizando o Contains que funciona como o Like do SQL e um OrderBy para ordenar o resultado pelo ano.

var Resultado2 = Carros.Where(p => p.Ano > 2005);


var Resultado3 = Carros.Where(p => p.Modelo.Contains("o")).OrderBy(o => o.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!

Meu primeiro computador.


[Diego Nogare]

Até hoje não sei se


é veneno ou não!
[Diego Nogare]

Meu primeiro brinquedo GEEK!


[Alexandre Tarifa]
20
Introdução a plataforma Windows Live
Introdução
Quem ainda não conhece a plataforma de desenvolvimento Windows Live não sabe o que está perdendo. São inúmeras API’s e SDK’s
que facilitam o desenvolvimento de aplicações utilizando conceitos da Web 2.0 e de redes sociais.
Windows Live é um conjunto de produtos e serviços oferecidos pela Microsoft que residem ou se conectam de alguma forma a
Internet, um conceito conhecido como “Cloud Services” (Nuvem de serviços). Esses produtos e serviços podem facilmente serem
integrados as nossas aplicações.
Windows Live é uma plataforma de consumo e também de oportunidades para desenvolvedores e sites de terceiros.
A grande maioria dos usuários da
Internet já teve algum contato com
algumas ferramentas e serviços que
estão sob o marca “Windows Live”,
serviços como Live Mail (que inclui
Hotmail e MSN Mail), Live Messenger
(MSN Messenger), Live Spaces, Live
Search e o Virtual Earth (http://
www.livemaps.com.br) são
diariamente usados por milhões de
usuários.
Serviços Windows Live estão numa
continua evolução e novos serviços e
produtos são adicionados
regularmente, como o novo Windows
Live SkyDrive, Silverlight Streaming,
Live OneCare, Live Events e etc.

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.

Os desenvolvedores podem construir suas


aplicações com linguagens comuns de
desenvolvimento e de script, como Visual C#,
JavaScript, Python, Ruby e Perl, tendo ainda um
suporte total na ferramenta de desenvolvimento
Visual Studio.
Essas aplicações podem rodar em distintos
browsers e sistemas operacionais, como Internet
Explorer, Firefox, Safari e Opera, e em sistemas
operacionais como Windows, Mac OS X e Linux.
Como podemos ver, a plataforma é dividida em
cinco grandes partes: Find & Locate, Identity, User
Data, Notifications & Messaging e Infrastructure.
Vamos entender o que é cada uma delas.
21
Introdução a plataforma Windows Live

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 .

Notifications and Messaging

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

Windows Live tools para o Visual Studio 2008

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

Primeiros passos no Visual Studio Team System


O desenvolvimento de um produto de software em conjunto já não é mais novidade em nenhum mercado. Falar hoje em dia de Rapid
Application Development (RAD) e Integrated Development Environment (IDE) também já não traz mais novidade, pois já temos ótimas
ferramentas como o Visual Studio 2008 que usa toda a tecnologia para oferecer grande produtividade no desenvolvimento de software e mais
precisamente na codificação. Com a plataforma .NET Framework também consolidamos outra dúvida comum que era a escolha da linguagem
de programação. Lá no passado eu escutava muito dos amigos a conhecida frase “A minha linguagem de programação é melhor que a sua”.
Conforme você vem acompanhando o mercado essa também já é uma afirmação bem ultrapassada.

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.

Conforme você pode observar na figura 01 os números são


alarmantes e representam também a nossa realidade inclusive no Brasil. É um fato claro que está mais barato desenvolver software hoje, no
entanto entregar com sucesso tem sido cada vez mais um grande desafio.

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

Primeiros passos no Visual Studio Team System


É muito importante você ter em mente que plataforma de Application Lifecycle Management (ALM) não é simplesmente uma ferramenta para
salvar seu código fonte como tenho observado alguns clientes que confundem o Visual Studio Team System (VSTS) com o Visual Source Safe
(VSS). O simples fato de armazenar o seu código fonte com as ações de Check-In e Check-Out você consegue tranquilamente com as
principais ferramentas do mercado de Source Control do mercado e não é essa a proposta de uma solução de ALM.

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.

Esses momentos com os clientes são de grande


importância pois passamos a investir na plataforma desde
2004 internamente. Apartir de 2005 com o lançamento
oficial para o mercado começamos a ofertar para os
clientes. E nada melhor que trazer esse grande feedback de
quem realmente acaba por usar a plataforma no seu dia a
dia.

Para você ter uma idéia do potencial oferecido pelo Visual


Studio Team System gostaria de lhe convidar a observar a
figura 02.

Nós temos uma estrutura divida em algumas camadas que


poderíamos separar conforme as seguintes visões:

 Ferramentas que atuam no cliente (Gerente de


projeto, Arquiteto, Desenvolvedor, DBA, Tester).
 Ferramentas que atual no servidor (Portal,
Comunicação, Relatórios, Controle de versão).
 Metodologia.
 Ferramentas de terceiros que complementam a
solução
26

Primeiros passos no Visual Studio Team System


O principal componente chave da nossa solução é o Team Foundation Server (TFS) conforme você pode conferir na figura 03 que se
encarrega de coletar todas as informações durante o clico de desenvolvimento. A comunicação é realizada por meio de itens de trabalho
(Work Itens), que são criados pelo MS Project, Excel ou diretamente no Visual Studio. Consiste nas tarefas a serem executadas dentro do
projeto. O TFS é o provedor de informações coletando dados e sumarizados para exibir por meio de relatórios estratégicos para
acompanhamento do projeto. Tenha em suas mãos o controle sobre o código fonte de forma integrada usando novos conceitos além do
“simples” armazenar, pois ele contém políticas de controle que permitem uma integração do código fonte ao ciclo de desenvolvimento. Tais
políticas permitem, por exemplo, garantir que todo o código enviado esteja relacionado a uma tarefa criada no MS Project. Destaca-se
também, pelo armazenamento de código dentro do SQLServer, usando transações atômicas evitando qualquer perda de código e permitindo
desenvolvimento remoto com toda arquitetura baseada em Web Services.
Você ainda pode observar na figura 03 os diversos recursos oferecidos por cada versão presente na solução: Achitecture Edition,
Development Edition, Test Edition, Database Edition

A idéia é você utilizar a versão do


Team Edition de acordo com o
seu papel no projeto. E para
complemento temos a versão
Visual Studio Team Suite que já
engloba toda as versões
anteriores.
Terceirização de projetos
desenvolvimento
Hoje em dia independente do
tamanho da empresa sendo ela
pequena ou média ou grande em
algum momento já ter sido
levantado a bandeira da
terceirização dos projetos de
desenvolvimento ou parte deles.
Nós temos cenários em clientes
que possuem 09 fornecedores
para desenvolvimento e o que
poderia ser de imediato uma
grande facilidade acaba
necessitando de uma série de
critérios para o devido
acompanhamento.

Com a plataforma de Visual Studio


Team System você agora tem
mecanismos eficientes para
gerenciar os fornecedores externos fazendo com eles sigam os padrões de desenvolvimento do seu projeto permitindo acompanhar a
qualidade do projeto e todas as entregas.

Modelo único para gerenciamento de todos os projetos


Por mais que tentamos padronizar os processos e tecnologias acabamos de ter que manter muitos projetos desenvolvidos em plataforma
legadas e que ainda demandam muitas ações para manutenção e modificações relacionadas. Você poderá utilizar o Team Foudantion Server
para armazenar também esses projetos usando próprio plug-in oferecido pela Microsoft ou conectores oferecidos por terceiros.
27

Primeiros passos no Visual Studio Team System


Transparência total
Para você que vive o dia a dia desenvolvendo software deve saber muito bem o que é encontrar uma alteração “desconhecida” em um bloco
de código. A primeira pergunta básica é quem mudou e logo em seqüência o por que dessa mudança. Eu posso dizer para você que seus
problemas acabaram pois com o Annotate você tem agora essa informação para auditar seu código a qualquer momento com transparência e
sem complicações vai identificar a pessoa que mudou, todos
os arquivos relacionados a essa mudança e quem fez essa
solicitação de mudança conforme pode observar na figura 03.

Qualidade de software é prioridade


Se produzir um produto com qualidade é desejo de todas as
empresas do mercado, para o Visual Studio Team System é a
uma prioridade. Quem nunca recebeu uma ligação de um
cliente reclamando que fez o primeiro teste na aplicação e
encontrou um problema? Tenho certeza que você deve ter
respondido que na sua maquina funciona. Falando assim até
parece que é uma piada, mas é um assunto muito sério que
afeta um grande número de projetos. Como pode você pode
garantir que os testes realizados estão cobrindo todo o
código? Para essa e outras dúvidas que temos todo um
conjunto de ferramentas integradas do VSTS com o objetivo
de trabalhar em cima da qualidade cobrindo desde registro
de bug, realização de testes unitários, funcionais, de carga,
manuais, cobertura de código e muito outras ferramentas
que possibilitam ao profissional agora ter mecanismos

eficientes para atuar na qualidade do projeto. Confira na


figura 04 um exemplo de relatório de cobertura de código
após a realização de um teste unitário.

Analisando a figura 04 você pode observar na cobertura de


código que quando o seu cliente estava reclamando ele
realmente tinha razão. Você estava entregando um bloco de
código que jamais estava sendo testado conforme indicado
pela seta.

Integrando o desenvolvimento do banco de dados


O banco de dados tornou-se um dos maiores parceiros das
aplicações. Com a solução de Visual Studio Team System
você vai estender a mesma gestão no desenvolvimento do
código fonte para o desenvolvedor de banco de dados / DBA
que agora trabalharam juntos usando poderosos recursos
cobrindo desde controle de versão até qualidade dos objetos
do banco de dados. Dentre os principais recursos podemos
citar:
28

Primeiros passos no Visual Studio Team System


- Reverse-Engineering (Importando a estrutura de um banco de dados existente para dentro do projeto no Visual Studio).
- Schema Compare (Comparando schemas entre banco de dados diferentes e gerando código T-SQL para o sincronismo das estruturas).
- Data Compare (Comparando dados entre banco de dados diferentes e gerando código T-SQL para sincronização).
- Refactoring (Trocando nomes dos objetos no banco de dados respeitando todas as dependências. Esse recurso funciona de forma muito
similar ao .NET ).
- Code Analysis (Utilizando análise estática de código para validar padrões de implementação em código T-SQL).
- Unit Testing (Criando testes unitários para validação de funcionalidades, schema, segurança e dados garantindo o controle de qualidade).

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:

 Utiliza algum controle de código fonte atualmente?


 Já tem alguma metodologia de desenvolvimento?
 Quantas pessoas participam do projeto e qual o papel delas nos mesmos?
 Você já tem uma área de qualidade?
 Quais linguagens e plataformas são utilizadas nos projetos?
 Qual seu banco de dados atual?
 Quais principais projetos atuais?
 Quais são as principais reclamações nos projetos?

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.

Para saber mais:


Standish Group Report: There’s Less Development Chaos Today
http://www.sdtimes.com/content/article.aspx?ArticleID=30247
Por que você precisa do Visual Studio Team System
http://blogs.2pc.com.br/ramonduraes/archive/2008/09/02/por-que-voc-precisa-de-visual-studio-team-system.aspx
Workshop Visual Studio Team 2PC Professional Consulting
http://www.2pc.com.br
Gerenciando projetos de software com Visual Studio Team System
http://www.2pc.com.br/mkt/cd/

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.

Vamos agora entender o que são cada uma dessas opções:

Policies: Pode-se entender que as policies são as políticas aplicadas, baseadas nas condições
(conditions) e nos objetos (facet).

Conditions: São as condições de uma determinada política, aplicada a um facet. É possível


definir várias políticas em um mesmo facet, e serão agrupadas como condição.

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 caso, pode ser dado


qualquer nome que lhe seja de
fácil associação, como vamos
trabalhar com o nome da tabela,
sugiro que seja “Nomenclatura
de Tabela”. O campo
exatamente abaixo do Name é o
Facet (objeto) que será aplicada
esta configuração que está
sendo criada. Escolha a opção
Table. Abaixo da escolha da
Facet, vem o grande momento,
montar a condição da política.
Uma grid é apresentada, e as
condições são montadas
utilizando os itens das colunas.
Na primeira linha, não é possível
colocar um AND ou OR,
justamente porque estamos na
primeira linha. O preenchimento
passa a ser utilizado da segunda
coluna pra frente. A coluna
Field, é referente à variável que
terá a validação, como será
sobre o nome da tabela, o campo Field selecionado deverá ser o @Name. A coluna Operator é para definir qual ação ocorrerá com aquela
variável, selecione a opção LIKE (semelhante ao coringa LIKE do T-SQL). E por final a coluna Value que pode receber uma outra variável ou
algum texto, neste caso, vai receber o texto “tbl%” (lembre-se que estamos trabalhando com T-SQL, então o texto deve estar entre
apóstrofos [aspas simples]). Veja a Figura 4, como seria esta tela já com as configurações apresentadas acima.
32
DMF - Declarative Management Framework no SQL Server 2008
Vou repetir os últimos passos
novamente, pra criar uma nova
condição, agora para nome de
stored procedures. Vou chamar
essa Condition de
Nomenclatura de Procs. Porém,
ao invés de criar com somente
uma expressão, vou utilizar
quatro com OR para todas as
opções. Eu quero que as
procedures geradas pelos
desenvolvedores tenham em seu
nome “%INS”, “%UPD”, “%DEL”
ou “%SEL”, representando
INSERT, UPDATE, DELETE ou
SELECT respectivamente. Veja a
Figura 5, esta condição.

Se você reparar o menu


Conditions, existirá duas novas
condições que não existiam
antes, estas são as condições
que acabamos de criar. Veja na
Figura 6 este menu.

Pronto, 50% do trabalho já está


feito. Utilizar uma Facet pronta
para criar uma condição!
Agora vamos para a segunda parte do trabalho, que é tão simples quanto a primeira. Será criada a política, escolhendo a condição que fará
parte dela.

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.

Na parte superior da tela de


resultados, é possível ver que a
política “Nomenclatura de
Tabela” está marcada com o
símbolo de falha, isso acontece
quando um ou mais itens dos
detalhes são insatisfatórios.
Estes detalhes estão na parte
inferior da tela, onde aparecem
dois itens, o primeiro que falhou
e o segundo que foi aprovado.
Vejam que é possível ver os
detalhes do resultado da análise,
tanto para o item que falhou
quando para o item aprovado,
quando clicamos no link
existente na coluna Details, da
linha que falhou, uma tela
mostrando o resultado que não
foi satisfatório é apresentado,
veja a Figura 12 esta mensagem.
35
DMF - Declarative Management Framework no SQL Server 2008
Entendendo o erro que foi apresentado pelo DMF, é
possível ver que o Expected Value é diferente do Actual
value. Este é o motivo do erro. O valor atual “cliente”
não começa com o texto “tbl”, por esse motivo ocorreu
o erro.

Agora analisando a mensagem que foi satisfatória, que o


DMF aprovou na política implantada, é possível ver que o
Expected Value é igual ao Actual Value, significando que o
valor atual “tblCliente” começa com o texto “tbl”. Veja esta
análise na Figura 13.

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.

Os telefones para Delivery são:


Suzano: (11) 4744-4657
Poá: (11) 4636-6513

Quem tiver a oportunidade de vir à região, conheça


este lugar. Não se arrependerá.

O Road Burger é uma lanchonete na


Mooca... Possui um ar de lanchonete de
beira de estrada, bem àqueles estilos de
filmes de Highway americanos... Seu
visual é bem descontraído e dá pra ir de
galera ou família, o ambiente é propício!
O melhor lanche do lugar é o famoso
hamburger de picanha. Os
acompanhamentos são escolhidos por cada
freguês... Nas ultimas vezes que eu fui, o
refrigerante era de refil, logo dá pra se
intoxicar com tanta bebida.
O preço não é absurdo, o hamburger de
picanha fica na faixa de R$ 14,00
dependendo dos acompanhamentos.

Mas se vocês forem ao Road, não deixem


de pedir a Banana Split, mas se preparem,
em 8 (oito) pessoas não conseguimos
comer toda a sobremesa.
Uma dica: Se precisarem de ajuda para
comer, não chamem os garçons, eles não
ajudam nessa hora. rs
37 Blogs, Foruns e Links

Blogs:
Pakua FeedCenter: http://feedcenter.pakua-it.com/

Fórum (Endereços para Entrar no Grupo):


Codificando .NET: codificandodotnet-subscribe@yahoogrupos.com.br
XNA-BR: xna-br-subscribe@yahoogrupos.com.br

Sites Recomendados:

Visual Studio 2008: http://msdn2.microsoft.com/en-us/vstudio/aa700830.aspx


SQL Server 2008: http://www.microsoft.com/sqlserver/2008/en/us/default.aspx

PodCast

Codificando .NET: http://www.codificandomagazine.net/PodCast


38
.Close( )
Cuidado, cuidado, muito cuidado antes de definir que tipo de aplicação escolher.

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.

Anda mungkin juga menyukai