Welcome to MSDN Blogs Sign in | Join | Help

SQL Server: um Endpoint Brasileiro

Discussão de assuntos ligados ao SQL Server e as ferramentas ao redor dele, como o Visual Studio por exemplo
Disponibilidade do SQL Server 2008 R2 (CTP)

Bastante gente tem me perguntado a respeito disto, então resolvi blogar. O primeiro CTP público do SQL Server 2008 R2 já está disponível para download para assinantes do TechNet.

O site com o link para download é o http://www.microsoft.com/sqlserver/2008/en/us/R2.aspx

Recomendo fortemente à toda a comunidade. Apesar de ser o primeiro CTP público (portanto, com código beta) os administradores e profissionais de TI em geral já podem começar a se familiarizar com o produto e testar as novas funcionalidades. Importante lembrar que o Kilimanjaro não traz apenas as tão esperadas funcionalidades de BI, mas também suporte a 256 processadores e bases de dados com centenas de terabytes. Recentemente fiz um jumpstart sobre o Madison (plataforma de DW do SQL Server) em Redmond. Alguns detalhes ainda não são públicos, em breve vou blogar sobre isto também.

Dúvidas? Let me know

Posted Wednesday, August 12, 2009 5:57 PM by procha | 1 Comments

Visual Studio Team System 2010 e Oracle Database

Boa notícia: está em desenvolvimento pela Quest Software um Database Schema Provider (DSP) para Oracle. Este DSP estará disponível no VSTS 2010, de acordo com Jason Zander, gerente geral do Visual Studio, em entrevista. Caso alguém tenha dúvidas quanto a competência da Quest no desenvolvimento deste DSP, lembro que eles são os desenvolvedores do Toad for Oracle, que é uma das ferramentas mais populares entre os DBAs deste banco de dados.

Na prática, isto significa que teremos todos os benefícios do Visual Studio 2008 Database Edition para bancos de dados Oracle, o que é fantástico. Pessoalmente, sou um grande fã do VSTS Database Edition e sempre que mostro ele aos meus clientes e parceiros percebo que eles ficaram entusiasmados. Para maiores detalhes sobre esta ferramenta, veja meu blog post Visual Studio Team System 2008 Database Edition. Em resumo, aí vão algumas das funcionalidades que podemos fazer HOJE com o DB Pro (como chamamos ele – ou DataDude), que poderão ser feitas com bancos de dados Oracle em breve:

  • Reconstrução de nomes de objetos com a habilidade de prever as mudanças antes de realizá-las (Refactoring)
  • Ferramentas de comparação (de schemas e dados) permitem comparações e sincronização do schema e dos dados entre bancos de dados de desenvolvimento, teste e produção
  • Teste de Unit do banco de dados (em breve também com análise de cobertura de código para testes de procedures, triggers, etc)
  • Controle de fontes e de versões de todos os objetos do banco de dados com a possibilidade de se fazer engenharia reversa em um banco de dados a fim de se trazê-lo ao sistema de controle
  • Colaboração em time com itens de trabalho (Work Item) e integração de processos com o Team Foundation Server, o qe viabiliza o desenvolvimento de banco de dados baseado em projeto
  • Aderência a processos de desenvolvimento de software
  • Gerador de carga de dados de teste com valores “Reais e Coerentes”, através habilidade de importar informações como Row Counts e histogramas de um banco de dados existente ou de geração de strings utilizando expressões regulares
  • Habilidade de enviar apenas as alterações realizadas em um banco de dados, ao invés de apagar o banco inteiro e reconstruí-lo a cada mudança
  • Muito mais

Para testar o Visual Studio visite http://www.microsoft.com/visualstudio/en-us/try/trial-software.mspx . Você pode baixar o arquivo .iso com o instalador, ou pode baixar uma VPC já configurada e iniciar seus testes.

Bom divertimento.

Posted Tuesday, April 14, 2009 3:23 PM by procha | 2 Comments

Service Pack 1 do SQL Server 2008 disponível para download

Anúncio oficial: disponibilidade do Service Pack 1 para SQL Server 2008.

“…

Está disponível desde ontem (07/04/2009) o Service Pack 1 para SQL Server 2008. Basicamente, o SP1 é um roll-up de updates acumulativos e oferece maior suportabilidade e estabilidade. Todos os clientes utilizando SQL Server 2008 devem fazer o download e atualizar seus ambientes para usufruirem das vantagens do SP1 imediatamente.

  • Com o Service Pack 1, a Microsoft fez investimentos que facilitam o deployment e tornam o gerenciamento de Service Packs mais eficiente. Não existem novas funcionalidades por parte deste Service Pack
  • Além do roll-up dos updades cumulativos anteriores, o SP1 inclui atualizações menores (QFE) em resposta ao feedback enviado pela comunidade de SQL Server
  • Entre as novas facilidades no gerenciamento de Service Packs, foi incluida a capacidade de deployment por slipstream, Service Pack Uninstall e Report Builder 2.0 click-once deployment
    • Slipstream permite aos administradores instalar o SQL Server 2008 e SP1 de uma só vez. Isto diminui o tempo total da instalação, incluindo menos reboots, o que implica em maior produtividade
    • Service Pack Uninstall permite aos administradores desinstalarem o Service Pack separado do restante do produto. Esta funcionalidade também aumenta a produtividade do DBA, reduz o custo de deoployment e aumenta a suportabilidade do produto
    • Report Builder Click Once melhora este aplicativo de autoria de relatórios para usuário final facilitando o deployment

Com mais de três milhões de downloads desde o RTM em Agosto, já é claro que os clientes veem o SQL Server 2008 como um investimento inteligente. Clientes, parceiros e desenvolvedores já usufruem dos benefícios que o produto oferece na versão RTM.

  • Existem poucos fixes com o SP1, sendo a maioria deles itens pequenos identificados pela comunidade
  • Este Service Pack oferece 80% menos chance de mudança na configuração do ambiente das empresas em comparação com Service Packs das versões anteriores. Este número é resultado do investimento feito pela Microsoft para facilitar o deployment de Service Packs
  • Empresas como Xerox, Samsung Electronics, Raymond James e outros estão rodando suas aplicações de missão crítica em SQL Server 2008.
  • Fazer o upgrade para SQL Server 2008 tem um ROI provado de 162%. Um estudo recente da Forrester sobre o impacto econômico total de se fazer o upgrade para SQL Server 2008 baseado em uma empresa real conclui que, além do alto ROI, foi percebida a redução de custos com produtividade e sobrecarga de trabalho totalizando mais de 3 milhões de dólares.

O SP1 está disponível para download em http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=66ab3dbb-bf3e-4f46-9559-ccc6a4f9dc19 

…”

Posted Wednesday, April 08, 2009 7:47 PM by procha | 1 Comments

Download gratuito de e-book: Introducing Microsoft SQL Server 2008

Como tenho tido pouquíssimo tempo de desenvolver conteúdo técnico e postar no blog, resolvi colocar esta boa notícia. Está disponível para download gratuito (mediante cadastro) o livro Introducing Microsoft SQL Server 2008 da Microsoft Press.

O livro se destina a DBAs, desenvolvedores, administradores de sistemas e qualquer outra pessoa que se interesse por bancos de dados em geral. Altamente recomendável também para quem JÁ conhece SQL Server, seja qual for a versão.

Para fazer download do livro visite este link. Aí vai a lista de capítulos, para poupar um pouco o seu trabalho, que está lendo meu blog (muito obrigado, aliás!):

Introducing Microsoft SQL Server 2008:
Chapter 1: Security and Administration
Chapter 2: Performance
Chapter 3: Type System
Chapter 4: Programmability
Chapter 5: Storage
Chapter 6: Enhancements for High Availability
Chapter 7: Business Intelligence Enhancements

E a capa:

ms_sql_srv_cvr

Em tempo, boas festas a você e a toda sua família. Que 2009 seja um ano de muita saúde, justiça, amizade e amor para todos nós.

Forte abraço e até 2009.

Pericles Rocha

Posted Tuesday, December 23, 2008 2:10 PM by procha | 4 Comments

SQL Server 2008: 10 Motivos para Fazer Upgrade (Demos do TechEd Brasil 2008)

Fiquei um tempo longe do blog. Isto se deve à extensiva rotina de trabalho e de um primeiro trimestre fiscal bastante “ocupado” aqui na Microsoft. Mas isso não é do interesse de ninguém aqui, então vamos ao que interessa.

Nos dias 14, 15 e 16 de Outubro deste ano tivemos o TechEd 2008 aqui em São Paulo. No dia 14, fiz a palestra “Upgrade para o SQL Server 2008: 10 Motivos para Fazê-lo” e prometi que postaria aqui o script de cada uma das demos – inclusive as que não deu tempo de eu mostrar :-)

Promessa é dívida. Infelizmente não posso postar a apresentação em si aqui, porque é restrita aos que estiveram no TechEd. Mas se você tiver dúvida sobre qualquer um dos assuntos abaixo ou se precisar de ajuda para reproduzir as demos, por favor me avise.

Os assuntos abordados no TechEd, caso você não tenha participado, foram os abaixo:

  • Data Compression
  • Policy Based Management
  • Resource Governor
  • Transparent Data Encryption
  • Auditoria
  • Novidades em T-SQL
  • Novidades no SQL Server Management Studio
  • Spatial Data
  • FileStream
  • Reporting Services

Os scripts estão disponíveis no link abaixo:

Algumas das demos, no entanto, foram em interface gráfica. Para a de Policy-Based Management, por exemplo, veja um outro exemplo que postei aqui no meu blog, quando a feature ainda se chamava Declarative Management Framework. O mesmo se aplica às novidades do SQL Server Management Studio, onde já publiquei um artigo aqui também – embora tenha aprendido com o Buck Woody sobre várias outras novidades que eu nem conhecia ainda.

Os bancos de dados de exemplo (AdventureWorks, AdventureWorks2008, AdventureWorksDW, etc) e os exemplos do Reporting Services também podem ser encontrados no CodePlex.

Em caso de dúvidas por favor me avise. Espero que tenha aproveitado o TechEd 2008!

Posted Tuesday, October 21, 2008 4:14 AM by procha | 0 Comments

Webcasts de SQL Server no MSDN Experience

Está disponível o novo MSDN Experience exclusivo para SQL Server. Parafraseando meu bom amigo Luciano Moreira (Especialista em Desenvolvimento na Microsoft Brasil):

“O Experience de SQL Server conta com 5 módulos, que cobrem desde à introdução ao SQL Server e suas ferramentas, passando pela escrita de consultas (simples e complexas), criação de views e stored procedures, programação CLR, arquitetura e componentes internos, indexação, gerenciamento de transações, análise de performance e troubleshooting, e como um extra, ainda temos duas sessões sobre o Service Broker…” “…O conteúdo do MSDN Experience pode ser aplicado tanto para o SQL Server 2005 e 2008, como em parte, para o SQL Server 2000.”

O conteúdo é muito bom! Dois dos webcasts foram gravados por mim.

Visite em MSDN Experience - SQL Server: http://www.msdnbrasil.com.br/experience/sqlserver

Enjoy!

Posted Wednesday, August 13, 2008 4:33 PM by procha | 1 Comments

Novidades no SQL Server Management Studio (SSMS)

Recentemente tenho utilizado bastante algumas das novidades do SQL Server Management Studio na versão 10 (SQL Server 2008) e achei que seria interessante postar sobre isto. Algumas dessas novidades eram muito esperadas (debug de código T-SQL e IntelliSense, por exemplo) e vão deixar os administradores bastante entusiasmados. Outros recursos novos ajudam a reduzir o tempo necessário para administrar seus servidores, inclusive versões anteriores do SQL Server.

Vamos a algumas das novidades mais interessantes:

IntelliSense

Agora é possível utilizar o editor de query do Management Studio com IntelliSense. Este recurso atua de forma muito similar de como funciona no Visual Studio, fornecendo recursos que completam os comandos conforme você os digita, destacam os erros de sintaxe e digitação e ajuda com parâmetros (aquele “tip tool” com a especificação dos parâmetros).

01  03 02

Há quem diga que não gosta de IntelliSense, mas são poucos. E os que “não gostam”, geralmente mudam de idéia muito rápido. Mas para quem realmente não gosta, o IntelliSense pode ser desativado.

Debugger para código T-SQL

Quando eu queria resolver um problema no meu código T-SQL, costumava colocar comandos SELECT ou PRINT no meio das procedures para analisar o valor das variáveis durante a execução. Era possível resolver problemas de código (em geral, problemas de lógica) por esse tipo de análise ou seguindo outras técnicas.

No novo Management Studio, é possível fazer debug do seu código T-SQL. Você pode colocar breakpoints, executar linha por linha e ter watches para analisar o valor dos seus objetos e de suas variáveis, da mesma forma como faz com o Visual Studio. Este é um grande recurso para aumentar a produtividade dos desenvolvedores e melhorar a qualidade do seu produto.

07

08

Procurar Objetos em seu banco de dados (Object Finder)

Você tem uma procedure, mas não se lembra o nome dela. Você sabe que ela tem a palavra “Converte” no meio do nome, mas não consegue encontrar ela. Seus problemas estão resolvidos!

Com o novo SQL Server Management Studio, você pode pesquisar todos os objetos do seu servidor através de um campo de busca, simples. Ele retorna todos os tipos de objetos e aceita sintaxes como LIKE (‘%Texto%’). Agora ficou mais fácil encontrar suas tabelas, colunas, procedures, views, logins e tudo mais.

05

Multi-Server Management

Faz tempo que temos a habilidade de registrar servidores SQL Server na organização na ferramenta de administração (Enterprise Manager, Management Studio) e termos uma lista organizada destes servidores. Por exemplo: criávamos grupos e, abaixo destes grupos, registrávamos os servidores SQL Server que quiséssemos, para fácil acesso. Acontece que esta lista ficava guardada no Windows Registry e era diferente em todas as estações que você se logava.

Agora o SQL Server Management Studio permite criar grupos de servidores em um repositório centralizado, chamado de Central Management Servers. Este repositório fica armazenado no MSDB de um servidor que você eleger e qualquer usuário que se conectar a este servidor vai visualizar a mesma lista de servidores disponíveis para administração. A partir deste repositório central você pode realizar as tarefas de administração do SQL Server Database Engine, Analysis Services, Reporting Services, SQL Server Compact e do Integration Services.

Consultas em vários servidores

A partir dos servidores registrados no seu ambiente centralizado, pode-se disparar uma query ou um comando que vai atingir todos os servidores do seu grupo de uma só vez. Este recurso foi solicitado pelos DBA, pois facilita tarefas repetitivas de administração.

Error List Window

Quando você executa um comando que retorna um erro no Management Studio, o erro indicava em qual linha estava o erro. Às vezes, você fica procurando o erro e simplesmente não consegue encontrar por ser um problema de digitação simples, ou por não conhecer a sintaxe corretamente.

A nova Error List Window dá mais detalhes sobre seu erro e a posição dele em seu código, enquanto você digita. Mais uma vez, de forma semelhante ao Visual Studio.

Posted Wednesday, August 13, 2008 4:20 PM by procha | 4 Comments

SQL Server 2008 RC0 (Release Candidate 0) - Download

O SQL Server 2008 RC0 já está disponível para download público em

http://www.microsoft.com/downloads/details.aspx?FamilyId=35F53843-03F7-4ED5-8142-24A4C024CA05&displaylang=en.

O site oficial do produto é http://www.microsoft.com/sqlserver/2008/en/us/default.aspx e alguns Virtual Labs podem ser encontrados em http://www.microsoft.com/sqlserver/2008/en/us/learning.aspx 

Enjoy!

Posted Thursday, June 12, 2008 5:15 PM by procha | 3 Comments

SQL Server 2005 em ambiente virtualizado

Virtualização tem sido um dos assuntos mais freqüentes nos bate-papos que tenho feito com meus clientes. Todos querem saber se  o SQL Server é um bom candidato para virtualização, tanto no aspecto econômico quanto do aspecto de disponibilidade e tempo de resposta. Com o lançamento do Hyper-V no segundo semestre deste ano as possibilidades de economia em ambientes de TI se tornam uma real possibilidade. Não apenas a economia, aliás, mas também a melhor utilização de seus recursos. Vamos explorar então alguns dos principais aspectos em torno deste assunto.

Benefícios da virtualização

A virtualização de servidores traz diversos benefícios às organizações, não importa o tamanho delas. Vamos entender quais são os principais benefícios desta opção:

Consolidação de Servidores

Estima-se que servidores dedicados funcionem muito abaixo de sua capacidade, mais exatamente de 5% a 15% das capacidades reais do hardware (veja maiores detalhes aqui). Virtualizando servidores em um número menor de servidores físicos ajuda a utilizar melhor o seu investimento em hardware, reduzir custos de energia e de refrigeração, além da economia de espaço físico. Se você precisar crescer sua estrutura, faz mais sentido (e é mais barato) adicionar digamos processador, memória e discos a um sistema existente do que comprar servidores novos. Em alguns servidores hoje pode-se particionar o hardware a fim de se alocar os recursos entre suas "máquinas virtuais" - embora este seja um conceito um pouco diferente do que estamos discutindo.

Licenciamento

Este é um dos assuntos mais importantes a abordar quando falamos em virtualização. Então, vamos primeiro aos básicos de licenciamento para SQL Server. O SQL Server pode ser licenciado de duas formas:

  • Por processador: é necessária uma licença do SQL Server 2005 para cada processador presente no servidor onde ele está sendo executado. O importante é lembrarmos que este método de licenciamento leva em consideração os processadores físicos, e não os núcleos em caso de processadores com mais de um núcleo. Por exemplo: uma máquina com quatro processadores quadcore (e, portanto com 16 núcleos) precisa apenas de quatro licenças para o SQL Server. Não é cobrado nada por cada um dos demais núcleos - este é, na verdade, um dos diferenciais do SQL Server em relação aos concorrentes. Este modelo é em geral utilizado em casos onde o número de SQL CALs torna o valor do modelo Server + CAL menos interessante ou em casos onde o acesso ao banco de dados é feito por clientes indeterminados (internet, por exemplo)
  • Server+CAL: neste caso adquire-se uma licença para o servidor e uma SQL CAL (Client Access License) para cada acesso feito ao SQL Server. Quando falamos em user CAL, é importante lembrar que esta licença é tratada de forma nominal, e não de acesso simultâneo

O grande benefício do ambiente virtualizado se faz realidade utilizando o SQL Server 2005 Enterprise Edition. Com esta edição, se você tem, digamos, dez máquinas virtuais em um servidor com quatro processadores, é necessário licenciar apenas os quatro processadores físicos do host. Se você utilizar SQL Server 2005 Standard Edition ou Workgroup Edition, seria necessário licenciar cada uma das dez máquinas virtuais.

Vários ambientes consolidados

Pode-se ter em um mesmo servidor físico os seus ambientes de produção, homologação e desenvolvimento, por exemplo. Cada um destes em uma instância virtualizada. Além disto, pode-se implementar soluções de alta disponibilidade como o cluster, log shipping ou database mirroring "in a box". Concordo que algumas destas soluções são específicas para endereçar problemas de hardware, como o cluster, mas mesmo assim é importante registrar.

Administração Centralizada

Ao invés de se ter vários servidores, consoles e racks, um local único para administração ajuda a reduzir os custos de operação e erros humanos.

Performance e Suporte

Tendo em vista todas as reduções de custo ainda permanece a dúvida: devo virtualizar meus servidores de banco de dados? A primeira preocupação é com performance. Também existe a preocupação não menos importante quanto a suportabilidade do ambiente.

Eu entendo que a resposta a este assunto vai variar de caso em caso, sendo oportuno um trabalho de testes comparativos. Em muitos casos, vai melhorar (ou ficar igual). Em muitos outros, vai piorar. Eu entendo que tendo feito um trabalho de capacity planning onde se estima o sizing dos servidores e atribuindo aos servidores virtuais tais recursos mínimos, não devam existir problemas de performance. No entanto, o príncipal gargalo em servidores de banco de dados está no subsistema de discos. Lembre-se que seus servidores virtualizados vão compartilhar de um mesmo bus para fazer IO e esta operação pode se tornar custosa. Com um ambiente de storage bem dimensionado e performático as chances se reduzem aqui.

Quanto ao suporte, desde que seus servidores estejam virtualizados utilizando tecnologia Microsoft (Virtual Server ou Hyper-V, quando este estiver disponível) o suporte é 100% garantido. Em tecnologias de virtualização não-Microsoft, o suporte poderá estar condicionado ao fato de se poder simular o mesmo problema em ambiente físico. Veja a política da Microsoft para suporte a ambientes virtualizados em http://support.microsoft.com/kb/897615/en-us 

Conclusão

A virtualização de servidores permite a empresas reduzir seus custos com data center reduzindo espaço necessário, economizando energia e recursos de resfriação. Além disso, viabiliza a melhor utilização dos seus recursos de hardware e a reduzir custos também com licenciamento.

No entanto, é interessante avaliar bem esta solução e suas conseqüências antes de tomar a decisão. Para maiores informações visite os sites:

Como sempre, fique a vontade para deixar suas dúvidas.

Posted Wednesday, May 28, 2008 7:28 PM by procha | 1 Comments

Coexistência entre plataformas

Ontem um cliente me fez a seguinte pergunta: é suportado utilizar em um servidor Windows Server 2003 x64, em paralelo, uma instância SQL Server 2005 64 bit e uma 32 bit?

R: Sim. Em um servidor x64 pode-se utilizar uma instância 32bit (sob WoW64) em paralelo a uma instância x64. Se o servidor for IA64, no entanto, não é possível. Veja a matriz de compatibilidade em http://msdn.microsoft.com/en-us/library/ms143694.aspx

Posted Wednesday, May 28, 2008 3:19 PM by procha | 1 Comments

Consultas Full-Text em Português no SQL Server 2005

Hoje vou escrever sobre um recurso muito popular no SQL Server 2005, que tem ganhado maior receptividade a cada dia: o Full-Text Search. Trata-se de uma tecnologia importantíssima que compõe o SQL Server. Vou falar brevemente aqui sobre seu propósito, como configurar Full-Text Search em português (PT-BR) e alguns cenários de exemplo. Espero que você goste.

Definição

O Full-Text Search (ou simplesmente FTS) permite que sejam feitas pesquisas de palavras em campos do tipo texto, XML ou binário, com flexibilizações semânticas. Imagine ter campos de texto livre em seu banco de dados (comentários, revisões), documentos do Word, PowerPoint ou outros formatos armazenados em colunas do tipo binary (e varbinary) e ter a possibilidade de efetuar uma pesquisa indexada a estes campos, de forma muito simples, obtendo como resultado não apenas os registros que contenham a palavra pesquisada, mas também registros que contenham diferentes formas semânticas da mesma palavra, ou até mesmo outras palavras que estejam relacionadas aos termos pesquisados. Esta é a funcionalidade que o Full-Text Search entrega.

Um exemplo: em uma aplicação web de uma livraria, que contém informações sobre livros, você armazena em uma das colunas as revisões feitas por usuários sobre um livro e, em outra coluna, um documento Microsoft Office Word com o primeiro capítulo do mesmo livro. O Full-Text Search permite que você pesquise as duas colunas pela palavra “Projeto” e que sejam retornados os resultados “Projeto”, “Projetos”, “Projetei”, “Projetaremos”, entre outras formas, com uma coluna que indica um ranking da relevância daquele resultado para a pesquisa solicitada. Ele permite ainda que se relacione a palavra “Obra” a “Projeto”, de modo que ao se pesquisar a palavra “Projeto” resultados que contenham o termo “Obra” também sejam retornados. Isto é especialmente relevante quando lidamos com marcas de produtos. Pode-se, por exemplo, fazer que seja retornado um registro com a palavra “SQL Server” ao se pesquisar pelo termo “SGBD”.

O interessante é que esta busca de semântica pode ser feita em diversos idiomas, incluindo o nosso português do Brasil (PT-BR). O sistema de quebra de palavras e de flexibilização leva em consideração as regras do nosso idioma para fazer a consulta. O Full-Text Search é um recurso integrado ao SQL Server. Ele é, na verdade, o mecanismo utilizado por ferramentas como o Microsoft SharePoint Server.

Faz sentido?

Cenários de exemplo

Além do exemplo acima, da livraria, os cenários abaixo ajudam a ilustrar a utilização do Full-Text Search:

  1. Gerenciamento Eletrônico de Documentos (GED)
    • Pesquisa de currículos em uma base de dados de RH (ex.: pesquisar as palavras “SQL Server”, “Educação”)
    • Pesquisa de material técnico
  2. E-Business
    • Navegação em Internet Banking (ex.: ao pesquisar o termo “Investimento” o resultado pode trazer “Investimentos”, “CDB”, “DI”, “Fundo de Ações”, etc)
    • Encontrar itens em catálogos de ofertas
  3. Departamento Legal
    • Identificar conteúdo em e-mail
    • Pesquisa de jurisprudência

Thesaurus, Noise Words e Idiomas

A obtenção de resultados a partir da associação de palavras relacionadas é produto da funcionalidade de Thesaurus do Full-Text Search. Você pode relacionar palavras em um arquivo XML de modo que resultados que sejam relevantes ao termo pesquisado sejam retornados ao usuário. O exemplo acima com Internet Banking ilustra bem este cenário (retornar “Ações” ao se pesquisar “Investimento”).

Pode-se também configurar palavras a serem ignoradas pelo mecanismo de pesquisa. Este recurso é chamado de Noise Words e se baseia na configuração de um arquivo de parâmetro contendo quaisquer palavras que precisem ser ignoradas, melhorando a relevância da pesquisa. Alguns exemplos são “Para”, “Onde” e “Se”.

Quando são construídos os catálogos e os índices Full-Text especifica-se o idioma daquele índice. A partir daí o SQL Server utiliza o “quebrador” (Word Breaker) que seja do idioma correto. Ainda assim, pode-se forçar a utilização de um Word breaker diferente durante a consulta para, por exemplo, fazer consultas utilizando de forma excepcional outro idioma. Em outras palavras: a pesquisa não é limitada ao idioma especificado ao criar o índice. Atualmente, o Full-Text Search está disponível em 23 idiomas diferentes.

Configuração do Full-Text Search em Português do Brasil (PT-BR)

É necessária configuração manual no SQL Server 2005 para configuração do Full-Text Search no nosso idioma. Isto é necessário, pois o Word Breaker para português foi desenvolvido por uma empresa externa.

AVISO: execute os passos abaixo sob sua responsabilidade. Como qualquer alteração no Windows Registry, é recomendável que o procedimento seja testado em ambiente de laboratório e que se tenha um backup completo do ambiente.

  1. Clique em Start-> Run. Digite regedit.exe e clique em Ok;
  2. Navegue até a chave; HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSearch\CLSID;
  3. Clique em Edit-> New e selecione Key. Digite {25B7FD48-5404-4BEB-9D80-B6982AF404FD} e pressione Enter para confirmar;
  4. Clique com o botão direito sobre o valor “(Default)” no painel da direita e selecione Modify. Insira o valor “ptblr.dll” e confirme;
  5. Clique em Edit->New e selecione Key novamente. Digite {D5FCDD7E-DBFF-473F-BCCD-3AFD1890EA85} e pressione Enter para confirmar;
  6. Clique com o botão direito sobre o valor “(Default)” no painel da direita e selecione Modify. Insira o valor “ptblr.dll” e confirme;
  7. Navegue até a chave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSearch\Language\ptb
  8. Clique em Edit->New e selecione String Value
  9. Digite NoiseFile e pressione Enter
  10. Dê um clique duplo em NoiseFile e digite o caminho “C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\FTData\noiseptb.txt”
  11. Repita os passos 8 até 10 para criar valores com os seguintes dados:
String Value TsaurusFile C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\FTData\tsptb.xml
DWORD Value Locale 00000416
String Value WBreakerClass {25B7FD48-5404-4BEB-9D80-B6982AF404FD}
String Value StemmerClass {D5FCDD7E-DBFF-473F-BCCD-3AFD1890EA85}

OBSERVAÇÃO: Os caminhos sugeridos os passos 2,7 e 10 podem variar se você estiver utilizando uma instância nomeada. Os passos acima também estão descritos no artigo http://support.microsoft.com/kb/908441/en-us

Utilizando Full-Text Search

Aí vai um exemplo muito rápido de utilização do Full-Text Search com busca por semântica:

SELECT Descricao FROM Comentarios

WHERE CONTAINS (Descricao, 'FORMSOF(INFLECTIONAL, "colocamos")')

Resultados (visualizados de forma parcial devido ao tamanho do campo utilizado):

image

Como disse, este é um exemplo bem simples que construí para esta demonstração. Para exemplos mais elaborados por favor deixe um comentário, ou simplesmente visite “Querying SQL Server Using Full-Text Search” http://msdn.microsoft.com/en-us/library/ms142559(SQL.100).aspx. Este artigo inclui os seguintes tópicos:

  • Full-Text Search Query Fundamentals
  • Searching for Specific Word or Phrase (Simple Term)
  • Performing Prefix Searches
  • Searching for the Inflectional Form of a Specific Word (Generation Term)
  • Searching for Words or Phrases Using Weighted Values (Weighted Term)
  • Searching for Words or Phrases Close to Another Word or Phrase (Proximity Term)
  • Querying varbinary(max) and xml Columns
  • Querying Multiple Columns
  • Querying Linked Servers
  • Integrating Full-Text Search and Transact-SQL Predicates
  • Comparing Full-Text Functions and Full-Text Predicates

Como sempre, sinta-se a vontade para deixar suas dúvidas e comentários.

** Obrigado ao Fernando Barros pelas notas de correção com o valor correto para a StemmerClass e com o nome da dll do word breaker.

Posted Thursday, May 15, 2008 10:50 PM by procha | 7 Comments

Problema ao estabelecer um Mirror

Recentemente estive em um cliente para configurar o Database Mirroring em uma base de dados. Pedi a ele para fazer um backup da base de dados inicial e restaurar no mirror, para que quando eu chegasse já fizesse o mirror.

Depois de criar os endpoints, ao tentar iniciar o mirror, vinha a mensagem abaixo:

"The server network address "TCP://<FQDN>:5022" can not be reached or does not exist. Check the network address name and that the ports for the local and remote endpoints are operational. (Microsoft SQL Server, Error: 1418)"

image

Na figura acima, estou omitindo o nome do servidor por questões de privacidade. No lugar da faixa em branco viria o FQDN do servidor de um dos endpoints. A porta 5022 é padrão, mas pode ser alterada durante a configuração.

Foram feitos os seguintes testes:

a) Ping no FQDN partindo do servidor A para o servidor B e vice-versa: OK

b) Telnet na porta 5022, partindo também de um lado para o outro: OK

c) Login utilizado tem permissão CONNECT nos endpoints: OK.

Solução: o restore do banco de dados não havia sido feito com a opção "WITH NORECOVERY". Embora a mensagem de erro nos leve a acreditar que o problema ocorre devido a uma falha de rede, esta foi a causa no nosso caso. É obrigatório que o restore da base de dados seja feito com esta opção, mas isto não foi percebido pela pessoa que fez o restore.

Apenas decidi dividir esta experiência aqui pois, pesquisando pela internet, vi pessoas discutindo em forums o mesmo sintoma, sem atingir uma solução.

Posted Monday, May 05, 2008 5:50 PM by procha | 2 Comments

Visual Studio Team System 2008 Database Edition

O Visual Studio Team System tem a capacidade de incorporar diversos papéis do processo de desenvolvimento de software nas organizações: desde o Arquiteto, passando pelo Designer, Gerente de Projeto, Tester e, é claro, o desenvolvedor. Ele faz isto fornecendo ferramentas que aumentam a produtividade, com um ambiente único de desenvolvimento e gerência do projeto de software. Desde a concepção do Visual Studio Team System (daqui em diante vou me referir a ele simplesmente por VSTS), no entanto, um dos principais papéis estava fora do ciclo de vida de desenvolvimento de software. Este papel é o do desenvolvedor em bancos de dados.

É este o cenário sobre o qual o VSTS 2008 Database Edition atua, o do desenvolvedor em banco de dados. Imagine ter todos os objetos do banco de dados sob controle de fontes, passando pelos mesmos fluxos de aprovação e colaboração de todo o seu código, e das funcionalidades de desenvolvimento offline fazendo check-in e check-out dos objetos do banco de dados. Imagine ainda ter ferramentas que façam teste de unit em código de banco de dados, ferramentas que geram dados de teste que realmente significam alguma coisa, ferramentas que fazem comparação entre schemas de banco de dados (desenvolvimento comparado com produção, por exemplo). Agora chega de imaginar - já é possível!

O objetivo deste post é descrever rapidamente alguns dos recursos do VSTS 2008 Database Edition. Na verdade, os meus recursos preferidos. Esta é uma ferramenta poderosíssima e assunto obrigatório para os desenvolvedores (e até mesmo para os DBAs).

O que é o VSTS 2008 Database Edition?

Trata-se de uma edição do VSTS 2008 que incorpora o profissional de banco de dados ao ciclo de vida de desenvolvimento de software. Na verdade, esta ferramenta já estava disponível no VSTS 2005, porém na forma de um add-in. Ele oferece os seguintes benefícios:

  • Desenvolvimento baseado em projeto
  • Aderência a processos de desenvolvimento de software
  • Colaboração em time com itens de trabalho (Work Item) e integração de processos com o Team Foundation Server
  • Reconstrução de nomes de objetos com a habilidade de prever as mudanças antes de realizá-las (Refactoring)
  • Ferramentas de comparação (de schemas e dados) permitem comparações e sincronização do schema e dos dados entre bancos de dados de desenvolvimento, teste e produção
  • Controle de fontes e de versões de todos os objetos do banco de dados com a possibilidade de se fazer engenharia reversa em um banco de dados a fim de se trazê-lo ao sistema de controle
  • Teste de Unit do banco de dados
  • Aproveita a infra estrutura de teste de projetos
  • Gera valores “Reais e Coerentes” através habilidade de importar informações como Row Counts e histogramas de um banco de dados reais
  • Gerador de Dados provê geração repetitiva de dados para testes baseados em configurações
  • Integração com MSBuild para Deployments/Builds de banco de dados baseando-se em projetos
  • Habilidade de enviar apenas as alterações realizadas em um banco de dados, ao invés de apagar o banco inteiro e reconstruí-lo a cada mudança

A lista de benefícios é extensa. A lista de recursos (features), também. Vou abordar neste post apenas alguns deles, se você tiver alguma dúvida em específico, por favor, poste um comentário.

Iniciando um Projeto

Existem três formas de iniciar um projeto de banco de dados pelo VSTS 2008 Database Edition:

  1. Iniciar um projeto em branco e criar cada objeto individualmente - O VSTS 2008 já tem os templates de projeto para banco de dados
  2. Iniciar um projeto utilizando um script T-SQL existente - se você tem um script de criação de um banco de dados e de seus objetos, pode importar este arquivo. O VSTS 2008 faz um processo de engenharia reversa no arquivo e cria os objetos em seu projeto
  3. Conectar-se a um banco de dados existente - minha preferida. Se você já tem um banco de dados na sua empresa, utilize este recurso. O VSTS 2008 se conecta ao banco de dados e gera os scripts de criação dos objetos. Isto permite que você comece a utilizar o VSTS 2008 Database Edition imediatamente, independente de ser um projeto novo ou um ambiente que já está em produção.

image

Figura 1: Janela com os templates de projeto para SQL Server

Observação: Perceba que neste instante você já pode colocar seu projeto em controle de fontes.

Para este exemplo, vou utilizar a opção número 3. O próprio assistente que cria o projeto já pergunta se você deseja importar o schema de outro banco de dados. Neste instante, você pode criar uma conexão com um banco de dados existente e o assistente se encarrega de ler seu schema e criar os objetos relevantes no projeto.

image

Figura 2: Opção por importar o schema de um banco de dados existente

O processo de importação de schema gera um arquivo .sql para cada objeto do seu banco de dados. Você pode visualizá-los pelo sistema de arquivos, ou pelo Schema View, no VSTS 2008. Cada um destes arquivos .sql irá fazer parte do seu controle de fontes e você pode fazer check-in e check-out nos arquivos, da mesma forma como faz com seus arquivos .cs, .vb ou outros. Por padrão, o nome destes arquivos é formado por [nomedoschema].[nomedoobjeto].[tipo].sql

image  image

Figuras 3 e 4: Visualização dos objetos gerados no Schema View e no Solution Explorer

Schema Refactoring (Reconstrução)

De acordo com Scott Ambler, autor de Agile Database Development, "Reconstrução do banco de dados é fazer uma alteração pequena no Schema que melhore o seu design sem alterar sua semântica". Por exemplo:

  • Renomear o nome de um objeto Schema para melhorar sua consistência, entendimento ou manutenção
  • Renomear TODAS referências deste schema
  • Renomear tabelas, views, stored procedures, user defined functions, etc.

É muito comum precisarmos alterar o nome de um objeto durante o processo de desenvolvimento. Com a funcionalidade de Refactoring, o VSTS 2008 atualiza todas as referências a este objeto no projeto com o nome novo. Ele ainda pode simular a alteração e emitir um mini-relatório de conclusão, para que você mesmo possa avaliar a mudança antes de efetivá-la.

Basta um clique com o botão direito para realizar o processo de refactoring. Após as alterações, se você estiver utilizando controle de fontes, o próprio processo de refactoring se preocupa em fazer o check-out dos arquivos necessários e fazer as alterações. Se você alterar o nome de uma coluna, como no exemplo abaixo, o VSTS atualiza quaisquer stored procedures que façam referência a esta coluna para refletir as alterações.

image 

Figura 5: Renomeando uma coluna no banco de dados.

image

Figura 6: Alterando o nome de uma coluna. Perceba a opção "Preview Changes"

Se mesmo após tiver feito as alterações você desejar desfazê-las, o Global Undo está disponível para desfazer tudo.

Build e Deploy

O VSTS 2008 Database Edition tem completa integração com o MSBUILD. Isto significa que você pode usufruir de todo o processo de build e entrega de versões de suas aplicações também em mudanças na camada de banco de dados.

Sempre que são feitas alterações no ambiente, sejam objetos novos ou a alteração de objetos existentes, é gerado um arquivo .sql com as alterações. Este arquivo pode ser enviado a um DBA para aprovação e execução, ou pode ser integrado ao seu processo de build diário.

image

Figura 7: Processo de Build e Deploy

Através do MSBuild é possível:

  • Utilização por linha de comando
  • Acesso por programação
  • Ligação entre as tarefas
  • Integração do time

Como já disse aqui, é possível enviar apenas alterações realizadas ou um banco de dados completo para o destino.

Em um deployment completo, todo o banco de dados é criado no destino. Este é o comportamento padrão, quando o destino não existe, mas também pode ser forçado pela opção de build “Always Recreate Database”

Em um deployment incremental, são enviadas apenas as diferenças entre o projeto e o banco de dados de destino.

Você pode ainda utilizar um script incremental que valida a versão do servidor de destino, nome do banco de dados e database compatibility level, entre outros atributos do servidor ou do banco de dados. Se a validação falhar em algum critério que voc6e especifique, o deploy pode ser abordado.

Mas se você não deseja utilizar o MSBUILD por linhas de comando, o VSTS 2008 pode enviar as alterações através de sua IDE.

Recursos para Teste

O VSTS 2008 oferece recursos para que você possa realizar testes em seu banco de dados. É possível fazer teste de unit e gerar dados de teste para popular suas bases.

Testes de Unit

O recurso de Unit Test disponível no VSTS 2008 funciona em conjunto com o Team Test do VSTS 2008. É possível utilizar código .NET para gerar os testes e também T-SQL. Pode-se, por exemplo, dizer se é esperado um tipo de resultado a partir de uma stored procedure e avaliar este resultado ao final da execução dos testes. O resultado pode ser um ResultSet, um RowCount ou valores escalares, por exemplo. Ou até mesmo um retorno sem conclusão determinada.

Dados de teste

Este é um dos meus recursos preferidos no VSTS 2008. O gerador que já vem embutido no VSTS 2008 (ele também permite que você plugue geradores de dados de terceiros) utiliza diferentes técnicas para gerar dados que são realmente relevantes para os seus testes. Pode-se pode exemplo utilizar expressões regulares para gerar expressões.

Aí vai um roteiro de exemplo para um gerador de testes em cima do banco de dados Northwind:

  1. Clique em dbo.Orders
  2. Clique no menu Data, Data Generator, e clique em Column Details.
  3. Em Column Details, selecione ShipCity, e defina o campo Generator com o valor Data Bound Generator. Isto indica que o gerador vai obter seus resultados a partir de uma query.
  4. No menu View, clique em Properties Window
  5. Na janela de propriedades, veja a sessão Generator. Na propriedade Connection Information, clique na conexão que corresponde ao banco de dados do qual você importou o schema. Esta opção se deve ao fato de consultarmos os dados em um banco de dados já existente.
  6. Na janela de propriedades, em Generator, na propriedade Query, defina a query string como "SELECT * FROM Orders".
  7. Em Column Details, no campo Generator Output para ShipCity, clique em [OutputTable1].[ShipCity].
  8. Salve o data generation plan.

Como sempre, fique a vontade para escrever seus comentários ou dúvidas.

Posted Monday, April 07, 2008 4:52 PM by procha | 2 Comments

Webcast Disponível: Manage and Deploy Database

Já está disponível o webcast que gravei para a equipe do MSDN sobre Manage and Deploy Database, com o Microsoft Visual Studio Team System 2008 Database Edition. Os tópicos abordados no webcast são:

  1. Visão Conceitual: visão geral sobre o produto
  2. Ciclo de vida de Desenvolvimento em Banco de Dados: como o desenvolvimento em banco de dados se integra ao ciclo de vida de desenvolvimento de software na sua empresa
  3. Iniciando um Projeto Novo (demonstração): técnicas para iniciação de um projeto a partir de um banco de dados novo, ou criação de um projeto baseado em um banco de dados já existente
  4. Estrutura do Projeto (demonstração): como o banco de dados fica estruturado no Visual Studio Team System
  5. Enviando Alterações (demonstração): como enviar apenas uma alteração simples para o banco de dados de produção, ao invés de "dropar" o banco de dados e reconstruí-lo

Para quem não conhece o DB Pro (como é chamado), trata-se de uma edição do Visual Studio que insere o banco de dados no ciclo de vida de desenvolvimento de software. Ele contém ferramentas interessantes, como a comparação de schemas (pode-se comparar o schema de um banco de produção com um de desenvolvimento e ver as diferenças, por exemplo), geração de dados relevantes para teste e deploy diferencial de um banco de dados, entre muitos outros recursos.

No próximo post vou escrever especificamente sobre o Visual Studio Team System 2008 Database Edition. Por hora, recomendo o webcast de apenas 37 minutos disponível em https://www.msdnbrasil.com.br/experience/vsts/Secure/Conteudo.aspx (Módulo 04 - Sessão 2 - Manage and Deploy Database)

Posted Wednesday, March 19, 2008 3:47 PM by procha | 0 Comments

Alta Disponibilidade com SQL Server

Alta disponibilidade é um assunto obrigatório quando falamos em servidores corporativos de banco de dados. Em qualquer segmento do mercado podemos citar exemplos de aplicações que não podem parar de funcionar: desde o controle de uma balança de caminhões na estrada até a emissão de passagens aéreas. Hospitais são um dos exemplos com o qual eu mais gosto de pensar quando falamos em missão crítica.

Meu professor de guitarra dizia a alguns anos que eu parecia médico, pois, quando eu trabalhava com suporte e precisava fazer plantão, ficava disponível 24 horas por dia no período de uma semana, que era o meu período de plantão em um mês. Mas eu acho que, por maior que seja o prejuízo de um sistema parado, nenhum supera o prejuízo de uma vida perdida ou de um atendimento de emergência que não pôde ser iniciado. Então quem faz missão crítica mesmo são os médicos e enfermeiros, não nós, meros geeks da área de TI J

Vamos voltar aos nossos prejuízos por causa de aplicações paradas. Os prejuízos podem ser em receita (entrada de pedidos, vendas), em aumento de custos (caminhões parados, utilização de processos manuais ou de contingência) e até mesmo na imagem da empresa (atendimento a clientes, emissão de passagens, entrega de produtos), entre outros. O SQL Server oferece diversas alternativas para atingirmos níveis non-stop de alta disponibilidade. É a abordagem que a Microsoft chama de Always On Technologies. No caso do SQL Server, seja com soluções como clusters geográficos ou outras muito simples e baratas como o Database Mirroring, os níveis alcançados de alta disponibilidade atendem as necessidades de negócio, independente do tamanho ou complexidade da aplicação. Neste post, vamos explorar algumas das alternativas de alta disponibilidade oferecidas pelo SQL Server 2005 e como elas foram melhoradas no SQL Server 2008. Mãos a obra.

Antes de tudo, porque tantas opções?

Uma pergunta freqüente é: porque existem tantas opções para resolver o mesmo problema? As diversas opções de alta disponibilidade oferecidas pelo SQL Server visam atender a qualquer cenário, não importa o tamanho da empresa. Seja um banco de dados de 100MB ou de 30TB, uma aplicação distribuída contra uma centralizada, temos uma solução mais apropriada para cada cenário. O que se deve fazer é olhar caso a caso e optar pela melhor opção. E, porque não, utilizar as opções de alta disponibilidade combinadas.

 

Database Mirroring

O Database Mirroring foi introduzido ao SQL Server 2005 como parte do Service Pack 1. Trata-se de uma tecnologia que permite atingir os maiores níveis de alta disponibilidade de uma forma muito simples e barata. Ele permite espelhar um banco de dados em outro servidor, aplicando quaisquer alterações no banco de dados no servidor principal instantaneamente no servidor de espelho.

Dependendo da forma como o Database Mirroring for configurado, o failover para o servidor de mirror pode ser automático, sem necessidade de chaveamento manual na aplicação. Isto é feito através da utilização de um servidor chamado witness (testemunha) que monitora a disponibilidade do servidor principal e “notifica” as aplicações que se conectam a ele a chavearem para o servidor de mirror. (as aplicações procuram pelo witness através de um parâmetro em sua connection string) Muito simples de configurar e manter, tem sido amplamente utilizado no mercado.

Quanto a desempenho, pode-se configurar se as transações serão enviadas em tempo real (de forma síncrona) ou com um pequeno atraso (de forma assíncrona). Isto permite balancear a carga de rede e de processamento.

No SQL Server 2008, o Database Mirroring foi melhorado. Ele compacta os dados que são enviados entre os servidores, gerando uma carga menor em rede. Além disso, a proteção dos dados passa a ser feita por páginas (pages of data): se uma página estiver corrompida, tanto no servidor principal quanto no mirror, o mecanismo do Database Mirroring toma o cuidado de recuperar a página a partir do outro servidor.

O que torna o Database Mirroring uma solução barata, afinal de contas? Vários fatores. Um dos principais é o fato de não precisar de hardware específico, como um cluster, por exemplo, que exige um disco compartilhado e hardware para cluster. Outro ponto importante é que se o servidor onde fica o mirror não for utilizado para consultas de outras bases de dados (apenas em stand by), não é necessário pagar a licença do SQL Server que está atuando como mirror. Esta configuração é chamada de cold backup. A partir do momento que a instancia de cold backup passa a ser utilizada, ainda que apenas para leitura, se faz necessário licenciar também este servidor. Porém, no caso de um failover, o servidor de backup pode ficar no ar até trinta dias no lugar do principal, sem que seja necessário pagar a licença do cold backup.

Log Shipping

O Log Shipping é uma tecnologia de alta disponibilidade que aplica logs transacionais em uma cópia do banco de dados com certa periodicidade, garantindo uma cópia atualizada do banco de dados na rede. Embora o tempo de atraso entre a aplicação destes logs no servidor secundário possa resultar em um banco de dados desatualizado no destino, pode-se utilizar a base secundária para leitura dos dados e recuperação caso ocorra um erro humano na base principal.

O Log Shipping está disponível desde versões anteriores do SQL Server e também é utilizado amplamente.

Failover Clustering

Geralmente o Failover Clustering é a solução mais comum quando falamos em alta disponibilidade. O SQL Server usufrui do serviço de cluster do Windows Server para garantir alta disponibilidade em caso de falha de hardware. O serviço de cluster do Windows Server (Microsoft Cluster Service) garante que serviços hospedados em um servidor sejam movidos a outro em caso de falha de hardware, com queda mínima no tempo de serviço (pouco maior do que o Database Mirroring). Esta solução requer hardware específico, sendo esta a principal desvantagem. Os servidores que são membros do cluster acessam um mesmo sistema de discos, que é compartilhado entre todos os membros do cluster.

O cluster é muito simples de se configurar, tendo todos os pré-requisitos atendidos. Da parte do Windows Server, um simples assistente faz a configuração. No caso do SQL Server, durante a instalação você marca uma opção dizendo que irá “clusterizar” recursos como o Database Engine ou o Analysis Services, escolhe os nós (nodes) do cluster que farão parte da instalação do SQL Server e o programa de instalação toma os devidos cuidados. Ao contrário do que muitas pessoas pensam, a versão Standard do SQL Server 2005 suporta a configuração de cluster de dois nós (nodes).

A principal novidade no SQL Server 2008 é o fato de não precisar de um drive lógico para cada instância SQL no cluster: agora várias instâncias podem utilizar um mesmo drive lógico (“G:“, por exemplo), o que deverá viabilizar mais a instalação de múltiplas instâncias SQL Server em um mesmo cluster. Além disto, agora será possível suportar 16 nós (nodes) em um cluster, mas este é na verdade um benefício do Windows Server 2008.

Geographically Dispersed Failover Clustering

Imagine um cluster separado fisicamente, com replicação de storage. Isto é o Geographically Dispersed Failover Clustering. A grande vantagem dele sobre o cluster comum é exatamente a característica de replicação do storage, que elimina um ponto de falha na solução. Na eventual falha do sistema de discos de um dos nós, todo o controle é cedido ao servidor secundário, que tem uma réplica dos dados.

Peer-to-Peer Replication

Entre os vários modelos de replicação do SQL Server, talvez este seja o que melhor se aplica ao tema alta disponibilidade. A replicação Peer-To-Peer permite que os dados sejam replicados entre dois ou mais servidores, não importa onde as alterações ou inserções estão sendo feitas. Para este cenário, no entanto, as aplicações precisam ser desenhadas de modo que sejam direcionadas a um dos servidores em específico, já que o SQL Server não faz resolução de conflitos (para isto, veja merge replication). Esta solução é especialmente apropriada quando falamos em servidores que estão separados por distâncias maiores.

Até o SQL Server 2005, o processo de replicação precisava ser interrompido caso houvesse a necessidade de adicionar um servidor a topologia de replicação. No SQL Server 2008, no entanto, este não é o caso: servidores podem ser adicionados à topologia de replicação sem parada da replicação.

Downtime Reduzido

Além das tecnologias citadas acima, vários recursos internos do SQL Server permitem uma maior disponibilidade do sistema. Alguns deles são:

  • Fast Database Recovery: disponibiliza parcialmente os bancos de dados durante o processo de recovery (enquanto faz rollback de algumas transações, por exemplo) , durante o failover em Database Mirroring e em processos de restore.
  • Backup and Restore: o processo de backup e restore permite que você faça cópias em várias unidades de fita, por exemplo, (também pode ser em disco) para ajudar em casos de perda ou de comprometimento da mídia de backup. O SQL Server também gera checksums para poder fazer verificações na fase de restore. No SQL Server 2008 a novidade é poder fazer backup comprimidos, que podem reduzir o número de fitas necessárias para o backup significativamente.
  • Checksum on Data Pages: compara os valores escritos no disco aos valores lidos do checksum (aplicando-se um algoritmo de verificação). Se não coincidirem, a página é marcada como suspect e precisa ser restaurada.
  • Online Index Operations: outro dia falei sobre isto em um cliente e ele disse: “-O SQL Server realmente faz isso?”. Faz sim!Desde o SQL Server 2005, é possível fazer manutenção em índices sem afetar a disponibilidade.
  • Online Piecemeal and Page-Level Restore: no SQL Server 2008, permite que se faça o restore dos filegroups por partes, deixando disponíveis os dados já restaurados. Também permite que se faça o restore de páginas corrompidas.
  • Partial Database Availability: deixa um banco de dados disponível mesmo se parte dele estiver comprometida (por falha em um disco, por exemplo)
  • Snapshot Isolation: garante que registros sejam lidos mesmo durante alteração dos dados, a partir da visualização de versões de uma linha. Aumenta a disponibilidade pelo fato de reduzir os tempos de lock substancialmente. Eu considero este um dos principais benefícios do database engine do SQL Server 2005 em relação a versões anteriores.
  • Dynamic Configuration: possibilidade de fazer upgrade de hardware sem parar o serviço. Como um exemplo, adicione memória em um servidor ligado (desde que o hardware dê suporte a isto) e disponibilize esta memória para o SQL Server sem parar o servidor. No SQL Server 2008, a novidade é o suporte a adição de processadores sem parar o servidor.

Perceba que alguns destes recursos estão disponíveis apenas na edição Enterprise do SQL Server. Para uma tabela comparativa entre as diferentes edições visite http://www.microsoft.com/sql/prodinfo/features/compare-features.mspx

Outro fator importante que precisa ser lembrado é que o SQL Server oferece todos os recursos citados acima out-of-box. Não é necessário pagar nada a mais para ter o Database Mirroring ou o Failover Cluster, por exemplo.

Conclusão

O SQL Server oferece diversas soluções para atingir níveis de alta disponibilidade. Embora sejam soluções individuais e auto-suficientes (não dependem necessariamente uma da outra), elas podem ser utilizadas em conjunto para atingir maiores níveis de alta disponibilidade, como no cenário abaixo:

  • Database Mirroing: site primário de disastre
  • Log Shipping: sites adicionais para disastre e recovery lógico (alterações não desejadas)
  • Replicação: relatórios e escalabilidade para leitura, com redundância
  • Clustering: redundância de servidor
  • Backup
image

 

Não importa o tamanho do seu negócio ou a complexidade da sua aplicação: O SQL Server é o servidor de banco de dados ideal para atingir alta disponibilidade com baixos custos.

Posted Friday, March 07, 2008 7:24 PM by procha | 6 Comments

More Posts Next page »
Page view tracker