Olá pessoal. Na coluna desta semana vou citar e comentar as 10 funcionalidades que mais me impressionaram no SQL Server 2008. Como o produto acaba de ser lançado, vale a pena conferir quais são as principais novas funcionalidades que são disponibilizadas.
Antes de começar a lista gostaria de deixar claro que esta é a minha opinião. Com certeza algumas pessoas podem discordar, ou mesmo achar que existem outros aspectos mais interessantes. Contudo, com base no que venho acompanhando da área e na praticidade e utilidade do que é apresentado no SQL Server 2008, elegi as 10 principais funcionalidades que considero mais importantes. Também levo em consideração que venho acompanhando a evolução do produto deste o a versão 6.5 até o último CTP (Community Technology Preview) do SQL Server 2008.
Obviamente, existem muito mais recursos novos no SQL Server 2008 do que os citados aqui e por isso recomendo a todos que estão considerando a atualização procurar material para aprender não só o que é novo, mas também o que já existia e foi modificado e o que não existe mais. Dito isso, podemos começar a verificar quais são as top 10 funcionalidades do SQL Server 2008 que mais me impressionaram.
 
10) Mudanças na linguagem
O SQL Server 2008 está recheado com novas implementações no T-SQL, o dialeto do SQL utilizado pela Microsoft. Algumas destas novas implementações são interessantes, outras razoáveis e poucas ruins. Dentre as principais mudanças na linguagem destaco o uso do operador MERGE, que facilita a sincronização de dados em tabelas com a mesma estrutura. Além disso também há melhorias gerais na linguagem (operadores compostos, atribuição de valores na inicialização de variáveis, novos tipos de dados, etc) e algumas perfumarias desnecessárias, como a possibilidade de inserção de múltiplas linhas dentro de uma instrução INSERT devido a novos parâmetros opcionais na sintaxe desta instrução. Por fim algumas cláusulas não compatíveis com o padrão ISO tornaram-se obsoletas, como WITH ROLLUP e o WITH CUBE.
 
9) Compactação de tabelas e backup
Parece que a Microsoft descobriu que a compactação de dados pode ser benéfica para quem trabalha com grandes quantidades de informações em banco de dados. Destaco que desde a versão 6.5 há uma crescente demanda na comunidade por recursos de compactação de dados no SQL Server que nunca foi atendida pela Microsoft.
Enfim, agora é possível compactar dados de uma tabela do banco de dados por meio dos novos recursos de compactação. Além disso a Microsoft também decidiu implementar a compactação nativa de backups. Fico só imaginando a quantidade de rotinas customizadas e linhas de código escritas para compactar e descompactar os dados devido à falta destes recursos e que possivelmente deverão ser abandonadas.
Apesar de considerar tanto a capacidade de compactação de tabelas como de backup importantes, não creio que estas funcionalidades tenham sido inovadoras, uma vez que outros bancos de dados já forneciam a compactação nativa de dados tanto para as tabelas como para o backup.
 
8) Change Data Capture
Toda a parte da ETL (Extract Transform Load) do SQL Server foi direcionada para o SQL Server Information Services (SSIS), que substituiu o DTS na versão 2005. Contudo essa ferramenta sofreu o mesmo problema do Reporting Services: por ser sua primeira versão ela apresentou apenas recursos básicos e deixou muito a desejar. Era natural esperar que a Microsoft continuasse investido no SSIS e apresentasse novas funcionalidades. Uma das mais interessantes é conhecida por Change Data Capture.
Imagine uma situação onde é preciso capturar todos os INSERTS, UPDATES e DELETES feitos sobre uma tabela de um banco de dados para qualquer fim (sim, inclusive auditoria). Até o SQL Server 2005 era preciso programar algo em triggers ou utilizar um trace do profiler para obter essas instruções. Já no SQL Server 2008 existe um mecanismo mais adequado para se obter as modificações de uma tabela e, posteriormente, utilizar esta modificações para qualquer objetivo. Basta indicar qual a tabela será monitorada e depois colher as informações em uma tabela espelho. Mais uma bola dentro da Microsoft que se tivesse sido apresentada anteriormente evitaria a programação de muitas e muitas linhas de código.
7) SQL Server Extended Events
No SQL Server 2005 houve uma grande revolução no tratamento de eventos com o uso do SQL Broker para facilitar a programação de ações assíncronas. O SQL Server 2008 continua a incrementar tanto o tratamento de eventos como os tipos de eventos possíveis. De acordo com a definição da Microsoft:
SQL Server 2008 introduces SQL Server Extended Events, an event infrastructure for server systems. This release of Extended Events enables you to open windows into the run time of the host process by using events as trace points. Those events can then be aggregated in memory, sent to a file, or output to Event Tracing for Windows (ETW).
Ou seja, podemos contar com mais recursos para a exportação de eventos e para o suporte ao tratamento de ações relacionadas à infra-estrutura do SQL Server e do sistema operacional. Do ponto de vista prático isso vai ser uma mão na roda para quem trabalha com monitoria ou precisa montar uma solução que dependa diretamente de notificações automáticas originadas do banco de dados ou do sistema operacional.
 
6) Novas funcionalidades do Query Editor
A Microsoft resolveu se redimir em um aspecto que envolve o Query Editor: de tanto ouvir que o Management Studio não possuía um debug próprio (era preciso utilizar o do Visual Studio) ela resolveu voltar atrás e colocar o debug no Query Editor do Management Studio. Nada mais lógico, uma vez que o próprio Query Analyser do SQL Server 2000 já possuía tal recurso.
Além disso existem outras modificações visuais para quem, como eu, gosta de trabalhar diretamente com os comandos textuais. Talvez a mais alardeada seja a colocação do IntelliSense diretamente no Management Studio, uma funcionalidade que auxilia a digitação de comandos completando-os conforme vai se digitando os caracteres. Essa funcionalidade já era esperada no SQL Server 2005, pois os desenvolvedores estavam acostumados com este recurso deste o Visual Studio 98. Já até existia uma ferramenta de terceiros chamada SQLPrompt que fazia um relativo sucesso fornecendo o IntelliSense para o Query Analyser do SQL Server 7.0 e 2000 e para o Management Studio do SQL Server 2005. Apesar de todo o benefício e facilidade que o IntelliSense possa proporcionar , eu particularmente creio que esta funcionalidade pode ajudar mais quem está começando e atrapalhar usuários mais experientes.
 
5) Melhorias nos controles do Reporting Services
Na minha opinião esta é a grande melhoria para o Reporting Services. No lançamento do SQL Server 2005 a Microsoft decidiu assumir a responsabilidade de fornecer um gerador e servidor de relatórios decente e não mais depender de soluções externas. Porém a primeira versão do Reporting Services fazia apenas o básico, não fornecendo suporte para a elaboração de relatórios complexos.
Quem já teve a necessidade de fazer um simples alinhamento de texto no Reporting Services sabe a dificuldade que era realizar formatações de layout mais complexas. Em plena era onde os recursos da Web 2.0 são abundantes, a Microsoft montou um gerador de relatórios que nem HTML aceitava! Porém a nova versão conta com controles adicionais, como o Gauge e o Tablix Data Region. Há também diversas novas propriedades para alinhamento de texto e outros controles. E finalmente a Microsoft tornou mais fácil para os desenvolvedores montarem seus próprios controles que possam ser inseridos em um relatório do Reporting Services. Devido aos benefícios que os controles customizados podem fornecer, agora é possível montar soluções que se baseiam em componentes para relatórios que podem ser amplamente reutilizados.
 
4) Melhorias de backup do banco de dados do Analysis Services.
Enquanto o backup e restore dos bancos de dados do SQL Server evoluirão recebendo mais recursos e se tornando cada vez mais fáceis de serem realizados, a Microsoft não dedicou a mesma quantidade de esforço no backup e restore dos bancos de dados do Analysis Services. Estes bancos de dados não armazenam os dados propriamente ditos, pois eles guardam definições, metadados, configurações, estatísticas e outras informações muito importantes para quem utiliza a plataforma de B.I. (Business Intelligence) da Microsoft. Em outras palavras, sempre foi um parto-de-porco-espinho-ao-contrário fazer um backup e restore com sucesso de bancos de dados grandes do Analysis Services.
No Analysis Services 2008 a Microsoft incrementou as opções para este tipo de backup, reduzindo as restrições de tamanho (sim, havia restrições de tamanho de backup!) e diminuindo os tempos de backup e restore necessários. Mais um passo na direção certa para tornar o Analysis Services um dos produtos mais utilizados para quem trabalha com B.I. e mineração de dados. A propósito, a área de mineração de dados apresentou poucos avanços, sem que nenhum novo algoritmo tenha sido incluído. Neste caso a predominância de mercado ainda está e vai ficar nas mãos de outras empresas que investem mais em soluções de B.I.
 
3) Melhorias de usabilidade no Replication Monitor
O processo de replicação de um banco de dados no SQL Server com certeza ainda é um dos mais críticos. Todo o DBA que já trabalhou com o replicação no SQL Server sabe que é um trabalho de detetive descobrir por que uma replicação parou e, algo ainda mais crítico, fazer a replicação voltar a funcionar. Uma das ferramentas que auxilia nestas tarefas é o Replication Monitor, que desde a versão 2000 apresentou uma interface pobre e com poucos recursos. Para se ter uma idéia do quão precário a interface era, não era possível nem filtrar ou organizar as colunas que apareciam no grid desta ferramenta.
No SQL Server 2008 a Microsoft resolveu incrementar o Replication Monitor. Agora é possível filtrar, ordenar e escolher as colunas a serem mostradas. Além de facilitar o relacionamento de quais agentes de replicação são relacionados com quais jobs, que são visualizados de forma centralizada. E por falar nos agentes de replicação, agora eles são associados com as assinaturas e publicações, pois antes eles ficavam avulsos, o que dificultava a identificação de qual agente e job pertence a qual assinatura ou publicação.
Aqui faço uma crítica e digo que no SQL Server 2008 AINDA não há suporte ao formato RSS (Really Simple Syndication) para a notificação de eventos de replicação. Em geral o SQL Server 2008 ignora o formato RSS, que é tão difundido e utilizado por diversos sites, blogs e aplicações com o objetivo de facilitar a notificação de eventos, sendo muito utilizado para indicar quando um novo post de um blog ou uma nova edição de um podcast está disponível. Aliás, parece que a Microsoft não está muito disposta a inserir tecnologias voltadas para a Web dentro do banco de dados. Por exemplo, não há nenhum tipo de ferramenta que recomenda a atualização. Nem mesmo o WindowsUpdate indica quais atualizações devem ser feitas no SQL Server. Outro exemplo clássico é a falta de um blog oficial do produto, de modo que o público em geral possa se relacionar com alguém da equipe de desenvolvimento e ficar pode dentro do que a Microsoft pensa sobre o produto.
 
2) Retirada do Surface Area Configurator
Nunca gostei muito do SAC (Surface Area Configurator), uma ferramenta que auxilia a modificação de configurações de segurança introduzida no SQL Server 2005. A motivação para a criação desta ferramenta com certeza foi a paranóia que se instalou na equipe de desenvolvimentos dos produtos da Microsoft em relação à segurança. Na minha opinião, a Microsoft não deveria ter criado uma nova ferramenta para fazer algo que é possível de ser executado com as ferramentas existentes.
Tanto as opções de segurança como as configurações de serviço possuem ferramentas próprias que permitem a configuração do ambiente com o objetivo de torná-lo mais seguro. Por isso defendo a hipótese que introduzir uma nova ferramenta com uma interface gráfica um pouco melhor não faz muito sentido para um DBA que geralmente está acostumado a utilizar vários comandos textuais diariamente. Se o objetivo é tornar o produto mais seguro, é mais interessante reforçar as opções de segurança, deixar desabilitados por padrão os itens mais críticos e proporcionar alternativas para evitar invasões, ataques, perda de dados e outros problemas relacionados com a segurança ao invés de apresentar uma nova ferramenta para se fazer algo que já era possível.
Apesar disso, sai o Surface Area Configurator e entra o Declarative Management Framework. De acordo com a definição oficial, o DMF é um sistema de gerenciamento baseado em políticas que, através de objetos reutilizáveis, permite que se configure o SQL Server e seus componentes em aderência a políticas de segurança das empresas. Muito bonito na teoria, mas na prática o DMF é um conjunto de opções que podem ser acessadas dentro do Management Studio com o objetivo de permitir permissões mais granulares aos recursos do SQL Server.
 
1) Índices e catálogo full-text integrado ao banco de dados
Finalmente. Deste a estréia dos índices full-text no SQL Server 7.0 a Microsoft insistiu em deixar totalmente separadas as informações relacionadas a este tipo de índices do banco de dados. Resultado? Apenas mais trabalho para o DBA fazer backup, saber onde os arquivos estão armazenados, cuidar das permissões, compactação, migração, atualização e outras tarefas que já são implementadas no banco de dados. Só quem já trabalhou com isso sabe a dificuldade e a complexidade de ter que administrar índices e arquivos separados do banco de dados principal.
 
Estas foram as 10 principais funcionalidades que mais me impressionaram no SQL Server 2008. Posso dizer que no geral a Microsoft fez um bom trabalho com o SQL Server 2008. Se considerarmos que esta versão foi lançada em apenas três anos (de 2005 a 2008) frente aos 5 anos de espera entre a versão 2000 e 2005 faz sentido que não haja nenhuma modificação radical. De qualquer maneira, na próxima coluna para o iMasters vou apresentar a top 10 piores funcionalidades que eu encontrei no SQL Server 2008, indicando o que poderia ter ficado de fora nesta nova versão do produto.