Vous êtes sur la page 1sur 175

APOSTILA ADMINISTRAO E MANUTENO DO SQL SERVER 2005

INDICE

Instalando o SQL Server 2005...................................................................1 SQL Server 2005 Surface Area Configuration Tool..21 Configurando Conexes Remotas Microsoft SQL Server 2005...................25 Modelo de Recuperao para Banco de Dados SQL Server 2005............... 44 Criao e Restaurao de Backup no SQL Server 2005............................. 50 Database snapshots................................................................................. 88 Desempenho do Servidor......................................................................... 95 Enviando e-mails com o SQL Server 2005............................................. 107 Introduo ao SQL Server Replication.................................................... 119 Log Shipping.......................................................................................... 140 Database mirror..................................................................................... 159

Instalando o SQL Server 2005


Edies do SQL Server 2005 Conhecer as edies do SQL Server 2005 disponveis essencial para que o Administrador decida qual delas utilizar, levando em considerao o ambiente onde ser instalado e a que tipo de tarefa a qual se destina. Analisar quais as suas necessidades atuais e como essas necessidades iro escalonar so essenciais para decidir quais componentes instalar. Veja abaixo as edies disponveis do SQL Server 2005 e uma descrio resumida sobre suas funcionalidades e aplicabilidades: Enterprise Edition: Edio mais completa do SQL Server, com todas as funcionalidades e ferramentas disponveis. Esta edio prpria para servidores de alta-disponibilidade e de misso crtica, pois possui recursos avanados de Espelhamento, Backup, Restaurao Online e Snapshots. A arquitetura do programa otimizada para ambientes de alta performance e eficincia. Developer Edition: Esta edio possui todos os recursos da Enterprise Edition, mas sua licena de uso restrita a ambientes de desenvolvimento e teste, no para produo. Esta edio recomendada para empresas e fbricas de softwares, para fins de teste e desenvolvimento de bancos de dados. O upgrade para a Enterprise Edition possvel. Standard Edition: Edio padro, onde so encontrados os recursos mais comuns para bancos de dados de pequeno e mdio porte. Utilize esta verso em sistemas que funcionaro via intranets ou sistemas web. Essa edio no oferece suporte a alguns servios de alta-disponibilidade e performance existentes na Enterprise Edition. Express Edition: Edio gratuita do SQL Server, prpria para aplicaes locais e desenvolvedores de pequenas solues. Todos os recursos bsicos para criao e manuteno de bancos de dados esto disponveis nesta edio. A Express Edition possui algumas limitaes de conexes e de recursos. Mobile Edition: Edio para dispositivos mveis, onde se possvel a replicao de bancos de dados SQL Server 2000 e SQL Server 2005, garantindo o sincronismo e a consistncia dos dados.

Confira na Tabela 1 as verses disponveis para cada edio do SQL Server 2005:

Tabela 1. Verses disponveis para cada classe de processador. Vale lembrar que a Microsoft disponibiliza o SQL Server 2005 Enterprise Edition para download na verso de avaliao, com todas as funcionalidades disponveis na verso normal. Esta verso de avaliao funciona por 120 dias.

Requisitos de Hardware importante verificar se o hardware disponvel atende o mnimo solicitado pelo SQL Server 2005, para que todos os componentes sejam instalados com sucesso. Se estes requisitos mnimos no forem atendidos, o servidor apresentar problemas de desempenho e de armazenamento, alm do no funcionamento de alguns componentes do SQL Server 2005. Confira abaixo os requisitos de hardware necessrios para uma instalao correta: Processador: O mnimo solicitado para a instalao um Pentium III ou superior, com o clock de 600 MHz. O recomendando pela Microsoft que o processador ultrapasse 1 GHz. Vale lembrar que este recurso deve ser analisado cuidadosamente: pois alm do SQL Server, temos outras aplicaes rodando (incluindo o Windows Server) que consomem o processador. Memria RAM: Varia de acordo com a edio desejada. Para as edies Enterprise e Developer, o mnimo de memria solicitado de 256 MB e o recomendado 512 MB. J para a edio Standart, o mnimo 64 MB. Por fim, a edio Express solicita no mnimo 32 MB de memria no Windows XP e 64 MB de memria no Windows 2000 e Windows Server 2003. Da mesma forma que o processador, estes requisitos de memria so apenas para o SQL Server: leve sempre em conta as aplicaes que sero executadas no computador. Espao em Disco: Os componentes do Banco de Dados do SQL Server alocam de 50 MB a 300 MB, dependendo das opes escolhidas na instalao. A instalao padro consome em torno de 250 MB do disco. Caso voc instale os servios de analises (Analysis Services), sero necessrios mais 50 MB para a instalao mnima e 130 MB para a instalao padro. O servio de relatrios (Reporting Services) aloca 50 MB para o servidor e 30 MB para a ferramenta de design.

Outros requisitos so: drive de CD/DVD, placa de rede e monitor com suporte a resoluo 1024x768 (as ferramentas do SQL Server 2005 so otimizadas para esta resoluo ou superior). Requisitos de Software Depois de verificado se o hardware compatvel com o SQL Server 2005, essencial verificar se o Sistema Operacional atende as necessidades da edio e verso escolhidas. Na Tabela 2 esto disponveis quais edies do SQL Server cada verso do Windows suporta:

Tabela 2. Requisitos de Software das edies do SQL Server 2005. Uma observao importante: no caso dos Windows Server 2000 e 2003, verses do SQL Server 64-bits s sero instalados em verses do Windows 64-bits. No possvel a instalao do SQL Server 32-bits em um Windows Server 64-bits e viceversa. Concluses Antes de instalar o SQL Server, o Administrador deve efetuar os trs passos de preparao para efetuar a instalao de forma simples e tranqila. Os passos da pr-instalao so: Escolha da Edio, baseado nas necessidades do ambiente; Verificao do Hardware, para que o mesmo atenda as necessidades do SQL Server; e Verificao do Software, garantindo que o Sistema Operacional oferecer o suporte solicitado ao SGBD. Voc pode encontrar mais informaes sobre as edies e requisitos do SQL Server 2005 no endereo: http://www.microsoft.com/brasil/sql/. No prximo artigo, abordaremos as consideraes e passos necessrios para efetuar uma instalao do SQL Server 2005 em um servidor que possui instalada uma verso anterior do SQL Server. At l.

Instncias Padro e Instncia Nomeada Instncia uma cpia do SQL Server instalada em um servidor. Toda vez que voc instala o SQL Server em um servidor, voc estar instalando uma instncia dele. Quando voc est instalando o SQL Server, o assistente permite voc definir a instalao corrente como a Instncia Padro ou como uma Instncia Nomeada. Uma Instncia Nomeada significa apenas que voc definir um nome para esta cpia que est sendo instalada. Isso faz com que o acesso a esta instalao seja feito atravs do nome do servidor e do nome da instncia (Ex: SERVIDOR\NOMEDAINSTANCIA). Uma Instncia Padro uma copia sem nome, e que o seu acesso feito apenas informando o nome do servidor onde ele est instalado. Portanto, voc s poder ter uma Instncia Padro por mquina, mas poder ter vrias Instncias Nomeadas. No assistente de instalao, o SQL Server detecta as instncias j existentes no servidor e as lista no boto Installed Instances. Caso voc queira instalar uma instncia padro, marque a opo Default Instance. Caso queria criar uma Instncia Nomeada, marque a opo Named Instance e escreva o nome da nova instncia. Confira na Figura 1 o momento da instalao onde voc configura as instncias.

Figura 1. Instalando uma instncia. Um detalhe a ser observado: ao instalar o SQL Server 2005 Express Edition, criado automaticamente a Instncia Nomeada SQLEXPRESS. Instncias Mltiplas Instncias Mltiplas o nome dado a situao onde voc possui vrias instncias instaladas em uma nica mquina. Pode ser tanto quando o servidor possui uma Instncia Padro e outras Nomeadas; ou quando voc tem somente Instncias Nomeadas. O SQL Server 2005 suporta a instalao de instncias mltiplas: tanto de cpias da verso 2005 como em paralelo a verses anteriores do SQL Server. Usar Instncias Mltiplas aumenta consideravelmente a manuteno administrativa e ocasiona a duplicao de componentes. Alm disso, as instncias adicionais consumiro mais recursos de processamento e de memria do servidor. Entretanto, em certas situaes, trabalhar com Instncias Mltiplas possui vantagens frente a trabalhar com uma nica instncia do SQL Server. Confira alguns casos abaixo: Testando vrias verses do SQL Server: Quando voc quer testar diferentes verses do SQL Server, incluindo edies diferente de uma mesma verso (Testar a Enterprise Edition e a Standard Edition do SQL Server 2005, por exemplo) em uma nica mquina, voc pode utilizar uma instncia para cada verso e assim efetuar os testes desejados. Testando Services Packs e Upgrades de Aplicativos: Com a finalidade de evitar problemas de compatibilidade e disponibilidade do banco de dados em atualizaes do SQL e/ou da Aplicao, recomenda-se usar uma instncia somente para testes, em paralelo com a que j funciona.

Clientes diferentes desejam ter controle completo do SQL Server: Existem casos em que um servidor atende vrios clientes, e os mesmos exigem privacidade e privilgios administrativos no SQL Server (criao de usurios e jobs prprios, por exemplo). Nessas situaes, o uso de Instncias Mltiplas garante a independncia e autonomia entre as instalaes dos clientes. A aplicao vem com o banco de dados embutido: Para evitar problemas entre outros programas instalados no servidor que usam bancos de dados, algumas aplicaes instalam instncias prprias e independentes do SQL Server, garantindo assim a sua autonomia e configurao de acordo com as necessidades.

Trabalhando com verses anteriores do SQL Server Quando voc est trabalhando com verses anteriores do SQL Server em um servidor, voc pode tanto atualizar o SQL instalado para a verso 2005, como pode usar o SQL Server 2005 lado a lado com a instalao existente. O primeiro tipo de instalao chamada de In-Place e o segundo tipo de Side-by-Side. A instalao In-Place sobrescreve os arquivos de programas das verses anteriores do SQL Server, mas mantm os bancos de dados criados pelos usurios, no havendo a necessidade de mover ou recuperar os bancos de dados existentes. Entretanto, recomenda-se que voc realize um backup de todos os objetos dos existentes, por questes de segurana. A instalao Side-by-Side trabalha com o sistema de Instncias Mltiplas, onde voc mantm a instalao j existente e adiciona uma nova instncia da verso 2005. Como mostrado no item anterior, uma instalao Side-by-Side permite um processo de migrao menos traumtico e com a possibilidade de testes, sem alterar no sistema que j est em funcionamento. possvel efetuar as instalaes In-Place e Side-by-Side do SQL Server 2005 em mquinas que possuem o SQL Server 7.0 e SQL Server 2000. Verses mais antigas devem ser antes atualizadas para essas verses e depois atualizadas para o 2005. Caso exista a necessidade de manter a compatibilidade dos bancos de dados com aplicaes desenvolvidas em cima de verses anteriores do SQL Server, voc pode usar o procedimento sp_dbcmptlevel para definir qual a compatibilidade do banco. Veja na Tabela 1 os valores usados para definir a compatibilidade no procedimento:

Tabela 1. Valores do procedimento sp_dbcmptlevel. Uma observao importante: o SQL Server Management Studio (SSMS) e o SQL Management Objects (SMO) no do suporte aos bancos de dados com a compatibilidade 60 (SQL Server 6.0). Concluses Trabalhar com instncias pode facilitar o trabalho do DBA na hora de gerenciar um servidor de banco de dados. Alm disso, requisito necessrio para determinar que

tipo de instalao executar em um servidor com uma verso anterior do SQL Server instalado. Voc pode encontrar mais informaes sobre instncias e compatibilidade do SQL Server 2005 no endereo: http://www.microsoft.com/brasil/sql/. No prximo artigo, simularemos todos os passos da instalao de uma instncia do SQL Server 2005 em uma nova mquina, como sua alterao e remoo de um servidor. At l. Instalao dos Pr-requisitos Na primeira etapa da instalao, o SQL Server 2005 verifica todos os componentes j instalados e exibe a janela de Instalao dos Pr-requisitos, como mostra a Figura 1:

Figura 1. Janela de Instalao dos Pr-requisitos. Este componente de atualizao garante o ambiente exigido pelo instalador do SQL Server 2005. Os componentes que podem ser instalados so o Windows Installer, .NET Framework 2.0, Microsoft SQL Native Client (Cliente Nativo SQL) e o Microsoft SQL Server 2005 Setup Support Files (Arquivos de Instalao). Efetue a instalao destes componentes e clique em Next. Uma observao importante: caso voc cancele a instalao o SQL Server, os componentes instalados pela ferramenta de atualizao (exceto o Setup Files) no so removidos. System Configuration Checker (SCC) Instalados os Pr-requisitos, inicia-se a instalao do SQL Server, apresentando a janela de boas vindas. Clique em Next para iniciar o System Configuration Checker (SCC), como mostra a Figura 2:

Figura 2. Janela do System Configuration Check. Esta ferramenta verifica vrias caractersticas do sistema e compara as configuraes detectadas com os requisitos solicitados para uma instalao bem sucedida do SQL Server. Caso o SCC detecte alguma incompatibilidade, o mesmo apresenta detalhes sobre este problema e solues para resolv-lo. As verificaes do SCC so divididas em 5 categorias: Configurao do Sistema: Nesta categoria, o SCC verifica informaes triviais, como verso do sistema operacional, Service Packs instalados e Requisitos de Hardware. No primeiro artigo da srie, voc confere todos esses requisitos. Disponibilidade do Sistema: Neste grupo, o verificador confere se no h nenhuma pendncia de reinicializao ou de outra instalao ocorrendo no mesmo instante. Configurao de Segurana: Verifica se o usurio que est instalando o SQL Server possui os privilgios administrativos necessrios para efetuar a instalao. Configurao de Verso: Checa que verses do Internet Explorer, SQL Server e do MSXML esto instalados.

Configurao de Cluster e Remoto: Para ambientes distribudos, verifica se o compartilhamento do administrador (admin$) est disponvel no computador remoto ou no n do cluster.

Aps verificar todos os itens, o SCC exibe um relatrio com todos os detalhes dos itens verificados, as incompatibilidades encontradas e que solues tomar para resolver o problema. Ele tambm exibe, em alguns casos, alertas sobre alguns itens que no impediro a instalao do SQL Server, mas que podem trazer problemas futuros, como a Configurao do Hardware e as Atualizaes de Segurana. Este relatrio pode ser salvo. Uma vez o System Configuration Checker ter sido executado e o resultado final ter sido Success, clique em Next para abrir a janela de Informaes do Registro. Informaes do Registro Nesta janela so inseridos os dados de personalizao da instalao. Preencha os campos Name, Company e insira o Serial Number do produto, como solicitados pelo registro (Observe a Figura 3).

Figura 3. Janela de Informaes do Registro. Uma vez preenchido os dados solicitados, clique em Next para escolher os Componentes do SQL Server a serem instalados. Componentes do SQL Server Uma das principais janelas da instalao do SQL Server 2005, a janela de Instalao dos Componentes onde voc escolhe que componentes e servios

10

oferecidos pelo SQL Server voc deseja instalar (ou atualizar, caso uma verso anterior esteja instalada). Observe a Figura 4:

Figura 4. Janela de Instalao dos Componentes do SQL Server. Para facilitar ao Administrador que est efetuando a instalao, o setup do SQL Server exibe os cinco servios disponveis como opes para serem escolhidas. Uma opo marcada significa que todos os arquivos daquele servio sero instalados na mquina. A ultima opo, quando marcada, instala os componentes de estao de trabalho, o Books Online (Ajuda) e as ferramentas de desenvolvimento. Esta opo no instala nenhum banco de dados de exemplo (Exemplo: AdventureWorks). Para instal-lo, acesse a opo de instalao avanada. Para uma instalao avanada, clique no boto Advanced. ento carregada a janela de seleo avanada, onde voc pode navegar em cada um dos seis itens da janela anterior e decidir que caractersticas voc deseja ou no instalar. Confira esta janela na Figura 5.

11

Figura 5. Janela de Seleo de Caractersticas. No nosso exemplo, vamos instalar todos os servios oferecidos, e tambm vamos instalar os bancos de dados de exemplo para estudo. Confirmada estas opes, clique em Next para acessar a parte de configurao de Instncias. Nome da Instncia O prximo passo definir o nome da Instncia e, consequentemente, o tipo de instalao a ser executada. Na Figura 6 voc pode observar que voc pode escolher a opo Default Instance (onde o nome da instncia o nome do servidor) ou Named Instance (Onde o nome da instncia definido por voc).

12

Figura 6. Janela de Instncias. Caso voc queira instalar uma instncia padro, marque a opo Default Instance. Caso queria criar uma Instncia Nomeada, marque a opo Named Instance e escreva o nome da nova instncia. No assistente de instalao, o SQL Server tambm detecta as instncias j existentes no servidor e as lista no boto Installed Instances (Figura 7).

13

Figura 7. Janela de Instncias Instaladas. Voc pode atualizar uma instncia j instalada, selecionando-a na lista e clicando em OK (Instalao In-Place). Para instalar uma nova instncia (Instalao Side-bySide), apenas coloque o nome da nova instncia na janela anterior. Depois de decidido o nome da instncia (no nosso exemplo, usaremos a Default Instance), avance na instalao clicando em Next. Componentes Existentes Esta janela opcional. Caso um dos componentes a ser instalados j estiver instalado, o assistente oferece a chance de voc atualizar este componente ou de manter a verso atual intacta. Veja na Figura 8 um exemplo.

14

Figura 8. Janela de Componentes Existentes. Marcando a opo voc est dizendo ao setup do SQL Server para atualizar este componente. Desmarcando a opo, o componente no ser alterado. Caso queira ver mais detalhes, clique no boto Details. Contas dos Servios Assim como em verses anteriores do SQL Server, nesta etapa voc deve associar contas de usurios aos servios do SQL Server (Figura 9). Basicamente, voc tem duas opes: associar uma conta a todos os servios que esto sendo instalados, ou associar contas diferentes para cada servio (Marcando a opo Customize for each service account). funo do Administrador de Banco de Dados definir a poltica de usurios que tero acesso ao SQL Server, principalmente quando o servidor ser inserido no contexto de um domnio.

15

Figura 9. Janela de Contas dos Servios. Alm disso, na mesma janela, voc pode definir quais servios sero inicializados quando a instalao do SQL Server for finalizada. Para o nosso exemplo, escolheremos a conta Network Service e iniciaremos todos os servios instalados. Clique em Next para escolher o Modo de Autenticao a ser usado. Modo de Autenticao Na tela de Modo de Autenticao, voc decidir que mtodo usar para autenticar conexes ao SQL Server 2005. So duas as opes disponveis: Windows Authentication: Esta opo de autenticao s aceita conexes de usurios que j tenham sido validados pelo Windows. o modo de autenticao padro e o recomendado, por oferecer os mais altos nveis de segurana. Mixed Mode: Este modo de autenticao suporta tanto autenticaes via Windows ou atravs de usurio e senha criados no SQL Server 2005. Recomenda-se o uso deste modo de autenticao quando a rede possui aplicaes que no utilizam as contas de usurios do Windows (Sistemas Legado). essencial a criao de senhas fortes, principalmente para o usurio sa.

Observe a tela de escolha do Modo de Autenticao na Figura 10:

16

Figura 10. Janela do Modo de Autenticao. Diferente da verso 2000, o setup do SQL Server no aceita a senha do sa em branco. Neste exemplo, escolhemos o Mixed Mode e definimos uma senha com letras, nmeros e caracteres especiais. Lembre-se de que a escolha do Modo de Autenticao essencial na definio das regras de seguranas a serem aplicadas no ambiente. Clique em Next. Configuraes de Intercalao A prxima tela a de definir qual vai ser a regra de armazenamento de caracteres No Unicode e como ordenar e comparar dados Unicode e No Unicode. a configurao de Intercalao. Basicamente, o assistente de instalao j determina esta propriedade, baseado nas propriedades do Windows instalado. Somente altere esta propriedade em duas situaes: Linguagem do SQL Server diferente: Caso voc esteja instalando o SQL Server para receber bancos de dados de outro idioma diferente do configurado no Windows; Participao de Replicao: Caso o servidor que voc est preparando faa parte de uma replicao e o idioma do banco de dados a ser replicado diferente do idioma padro.

No nosso exemplo, deixaremos as opes j trazidas pelo setup. Clique em Next.

17

Instalao do Servio de Relatrios Caso voc tenha escolhido instalar o Report Services, esta janela aparecer para que voc decida se o instalador do SQL Server ir instalar e configurar automaticamente o servio ou no (Figura 11). Clicando no boto Details, voc poder conferir todas as propriedades da configurao automtica, alm de j disponibilizar o servio logo aps a instalao.

Figura 11. Janela das opes do Report Server. Somente escolha a opo Install but do not configure the server se voc for configur-lo manualmente, para atender as necessidades especficas do ambiente. No nosso caso, deixaremos que o prprio setup defina as propriedades padres do servio. Depois disso, clique em Next. Finalizando a Instalao Uma vez que todas as propriedades desejadas foram configuradas, so mostradas as ultimas telas da instalao. Primeiro, o assistente pergunta se voc deseja enviar relatrios de erros e de estatsticas de uso para a Microsoft. Marque as duas opes caso deseje e clique em Next. Ento o assistente de instalao exibir um resumo do que ser instalado, como mostra a Figura 12:

18

Figura 12. Janela Ready to Install (Pronto para instalar). Clique em Install. A partir deste instante, o resto por conta do instalador, que vai exibindo o progresso da instalao de cada componente, como mostra a Figura 13:

19

Figura 13. Janela Setup Progress (Progresso da Instalao). Por fim, aps todos os componentes instalados e com a mensagem Setup finished em cada um dos itens, clique em Next e a instalao estar concluda. A ultima tela exibe um link para o Log da instalao, para o Surface Configuration Area e algumas informaes sobre os servios instalados. Clique em Finish para encerrar o assistente do SQL Server 2005. Concluses O setup do SQL Server 2005 ajuda no somente a instalar o produto, mas a entender os passos e resolver problemas que acontecem ao longo da instalao. Ferramentas como o System Configuration Checker verificam se o servidor est pronto para uma instalao bem sucedida. Tambm vimos como efetuar a instalao de instncias e como associar contas de usurios aos servios do SQL Server. Voc pode encontrar mais informaes sobre as etapas de instalao do SQL Server 2005 no endereo: http://www.microsoft.com/brasil/sql/.

20

SQL Server 2005 Surface Area Configuration Tool


Acessando o Surface Area Configuration O SQL Server Surface Area Configuration est disponvel para todas as edies do SQL Server 2005 (Express, Workgroup, Standard, Developer e Enterprise). Uma vez instalada uma instncia do SQL Server, o programa poder ser acessado atravs do Menu Iniciar, na pasta Microsoft SQL Server 2005 > Configuration Tools. Ao abrir o programa, exibida a tela inicial, onde o Administrador pode escolher que tipo de configurao efetuar e em que servidor esta configurao ser feita, como mostra a Figura 1.

Figura 1. Janela inicial do SQL Server Surface Area Configuration.

21

No nosso exemplo, o Surface Area est conectado ao servidor local (Localhost). Para se conectar a uma mquina remota, clique no link Change Computer e defina o nome do servidor a ser conectado (Figura 2).

Figura 2. Caixa de alterao do servidor ao qual o Surface Area vai configurar. Observe que este recurso faz com que a administrao de vrias instncias do SQL Server seja simplificada. Observe tambm que o Surface Area se conecta ao servidor, e no apenas a uma instncia: se o servidor conectado possuir trs instncias do SQL Server, o DBA tem total liberdade de configur-las de uma s vez. Uma vez definido o servidor, o prximo passo escolher que configurao voc deseja realizar. Voc pode configurar os servios e conexes das instncias do SQL Server; ou configurar recursos de automao e compatibilidade, como o Database Mail e o suporte a CLR. Configurao de Servios e Conexes A Configurao de Servios e Conexes (Surface Area Configuration for Services and Connections) responsvel por duas atividades: estabelecer como os servios do SQL Server sero iniciados e como podero ser feitas as conexes remotas para estes servios. Os servios do SQL Server so o Database Engine, responsvel pelo gerenciamento dos bancos de dados; o Reporting Services, responsvel pelo funcionamento dos relatrios do SQL Server; o SQL Server Agent, responsvel pelo

22

agendamento e automao de tarefas administrativas; e o Full-Text Search, responsvel pela pesquisa aprimorada em campos com contedo do tipo texto. Ao escolher a opo de servios e conexes, o Surface Area apresenta ao Administrador a janela de configurao, como mostra a Figura 3.

Figura 3. Configurando Servios e Conexes do SQL Server. No lado esquerdo da janela, o Surface Area apresenta a listagem das instncias instaladas no servidor, com seus respectivos servios. Esta listagem pode ser ordenada por instncia (padro), onde ele lista os servios de cada instncia; ou por componente, onde ele lista as instncias por servio disponvel. Ao expandir as opes da listagem, o DBA encontrar no final duas configuraes possveis: Services (Servios) e Remote Connections (Conexes Remotas). Na configurao dos servios, o Administrador tem a possibilidade de visualizar o nome do servio selecionado, seu nome de exibio, sua descrio e estado atual. Alm disso, o DBA pode configurar a forma de inicializao e alterar o estado do servio. A configurao de servios est disponvel para todos os componentes do SQL Server. No nosso exemplo (Figura 3), atualmente o servio Database Engine do SQL Server est parado (Service Status). Para inici-lo, basta clicar no boto Start e o servio ser iniciado. Ainda no exemplo, a inicializao do servio (Startup Type) est Manual, o que implica ao Administrador iniciar o servio toda vez que for us-lo. Podemos configurar a inicializao do servio para Automatic, fazendo com que o servio suba toda vez que o servidor for ligado. Uma dica para os DBAs a de configurar a inicializao dos servios do SQL Server 2005 apenas aps a instalao de uma instncia. Isto permite ao administrador

23

efetuar as configuraes de conectividade e inicializao desejada no Surface Area Configuration Tool para ento iniciar somente os servios desejados. Todos os outros servios disponveis no SQL Server 2005 so configurados da mesma forma apresentada acima para o Database Engine, incluindo o Integration Services (SSIS) e o SQL Server Browser, que so servios disponveis para todas as instncias instaladas no servidor. A Configurao de Conexes Remotas responsvel por estabelecer se os clientes tero acesso a um servio e como ser feita esta conexo. Os componentes que oferecem a opo Remote Connections so: Database Engine e Analysis Services. Observe a Figura 4.

Figura 4. Escolhendo as opes de conexo remota do SQL Server. No exemplo acima, estamos alterando as opes de conexo do servio Database Engine da instncia MSSQLSERVER. Por padro, as edies Express, Developer e Evaluation s permitem conexes locais, enquanto as edies Standard, Workgroup e Enterprise permitem conexes via TCP/IP. Para alterar esta opo, o Administrador deve definir duas opes: se vai permitir conexo remota ao servio selecionado e; em caso de positivo; que protocolo utilizar. Na instncia MSSQLSERVER, a conectividade est configurada para dar suporte a conexes remotas via TCP/IP. O Administrador pode configurar para dar suporte a conexes remotas via Named Pipes, TCP/IP ou a ambos. importante o DBA determinar que protocolo utilizar, pois influenciar diretamente na quantidade de portas a serem configuradas no Firewall do servidor. Os protocolos disponveis so:

24

NAMED PIPES: Protocolo desenvolvido para redes locais, permite que as informaes de um processo passem para um processo seguinte, atravs da memria, de tal forma que a sada do primeiro a entrada do segundo. O segundo processo pode ser local ou remoto. TCP/IP: Protocolo comumente usado para transmisso de dados em redes heterogenias (diversas arquiteturas), como a internet. Oferece padres de roteamento de trfego e configuraes avanadas de segurana.

No caso do Analysis Services, a configurao de conexo se limita a escolher entre permitir ou no conexes remotas: o Analysis Services s permite conexes usando o protocolo TCP/IP. J as conexes remotas do Reporting Services e do SQL Server Agent no so configuradas no Surface Area Configuration Tool. Uma vez definido os servios e as conexes remotas das instncias instaladas no servidor, o Administrador pode acessar a configurao de recursos para disponibilizar ou bloquear vrias funes do SQL Server.

Configurando Conexes Remotas Microsoft SQL Server 2005


Muitos casos de problemas com conexo ao servidor de Banco de Dados ocorrem por uma limitao que o SQL Server 2005 possui por padro. Esta configurao de segurana que vem padronizada no SQL pode ser alterada facilmente. Neste artigo, ser apresentada uma maneira de como solucionar este problema rapidamente. Para simular o ambiente, duas mquinas sero utilizadas. Uma ser o Servidor de Banco de Dados, e a outra ser a mquina cliente. No diagrama abaixo, existe uma arquitetura de exemplo para ilustrar a soluo.

O nome do Servidor de Banco de Dados NGRSERVER e a mquina cliente se chama NOTEBOOK. A instncia do SQL Server 2005 que est no servidor chamada de SQL2005. Vamos ao que interessa. Ao tentar acessar o Servidor de Banco de Dados com sua configurao padro, uma mensagem de erro apresentada. Esta mensagem diz que ocorreu um erro enquanto estabilizava uma conexo com o servidor, esta falha pode ser pelo fato da configurao padro do SQL Server no permitir conexes remotas.

25

"An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections."

A soluo deste problema resolvida em alguns passos: 1. Permitir conexes remotas instncia do SQL Server que ser acessada de outro computador; 2. Habilitar o protocolo TCP/IP para conexo e trfego de informaes; 3. Iniciar o servio do SQL Server Browser; 4. Configurar o Firewall para permitir que informaes relacionadas ao SQL Server seja permitido de passar por ele. Estes passos garantem a conexo remota do SQL Server. Abaixo cada passo explicado detalhadamente. Passo 1: Para permitir que computadores acessem instncias do SQL Server em outra mquina, a primeira coisa a ser feita uma configurao na instncia que receber as conexes remotas, no nosso caso, o SQL2005 no servidor NGRSERVER.

26

Para fazer isso, conecte-se localmente na instncia do servidor, clique com o boto direito na instncia conectada e aponte o mouse para Properties.

27

Depois de acessar a tela das propriedades da instncia do SQL Server, escolha, no menu da esquerda, a opo Connection. A parte direita da tela ser referente Connection, procure a opo Allow remote connection to this server. Deixe esta opo marcada. Clique em OK.

A concluso deste procedimento passa a garantir que a instncia do SQL Server poder receber conexes remotas, mas este no o nico passo a ser cumprido. Mais alguns passos devem ser seguidos para a concluso da tarefa. Passo 2: Para permitir que o protocolo TCP/IP trafegue informaes do SQL e que conexes possam ser estabelecidas atravs deste protocolo, vamos liber-lo no SQL Server, utilizando uma ferramenta disponvel na instalao das ferramentas de administrao. A ferramenta o SQL Server 2005 Surface Area Configuration. Esta ferramenta por padro, encontra-se na pasta Configuration Tools do SQL Server 2005. Nesta ferramenta, utilizaremos os recursos de Surface Area Configuration for Services and Connections.

28

Acesse Surface Area Configuration for Services and Connections, no menu da esquerda expanda o item da instncia, neste caso, SQL2005. Depois expanda Database Engine e selecione Remote Connections. Na tela da direita, selecione a opo Local and remote connections e em seguida Using TCP/IP only. Clique em OK.

29

Esta configurao permite agora, que a instncia selecionada receba conexes locais e remotas, as conexes remotas sero somente por TCP/IP. A opo Using both TCP/IP and named pipes tambm poderia ser sido utilizada, sem problemas. Continuando com a configurao do TCP/IP, vamos utilizar agora outra ferramenta, SQL Server Configuration Manager. Nesta ferramenta utilizaremos o recurso SQL Server 2005 Network Configuration, que se encontra no menu da esquerda. Ao expandir este item, encontramos o Protocols for SQL2005. Ao clicar nele, algumas opes se abriro do lado direito da tela. Nas opes disponibilizadas, devemos deixar o protocolo TCP/IP com status de Enabled. Para fazer isso, clique com o boto direito do mouse em TCP/IP e v em Enabled. Aps isso, ele aparecer configurado.

30

Depois de configurar o status para Enabled, mais duas verificaes devem ser feitas nas propriedades do protocolo TCP/IP. Para acessar estas configuraes, clique com o boto direito do mouse em TCP/IP e em seguida em Propriedades. Uma tela com duas abas superiores se abrir. A primeira aba Protocol, deve ficar com a propriedade Enabled configurada para Yes.

Na segunda aba, IP Addresses, devemos garantir que as propriedades Active e Enabled estejam configuradas para Yes.

31

Aps garantirmos estas configuraes, clicamos em OK para salvar nossas alteraes. As alteraes que foram feitas nestas duas ferramentas so teis para garantir que a instncia do SQL Server selecionada possa receber conexes remotas e que o protocolo remoto de conexo o TCP/IP. Passo 3: Para iniciar o servio do SQL Server Browser, utilizaremos novamente a ferramenta SQL Server Configuration Manger. Para acessar a rea que controla os servios do SQL Server, no menu da esquerda, ser utilizado o item SQL Server 2005 Services. Na parte direita da tela, os servios relacionados ao SQL Server so apresentados. O servio SQL Server Browser encontra-se com seu State configurado para Stopped. Para iniciar o servio, clique com o boto direito do mouse no servio e em seguida clique em Start. Este processo levar alguns instantes, e o State antigo passar a ser Running.

32

Aps a inicializao do servio do SQL Server Browser, e as configuraes de liberao para acesso remoto e de TCP/IP, o servio da instncia do SQL Server deve ser reiniciado para que as alteraes tenham efeito. Para fazer isso, na mesma tela onde foi iniciado o servio do SQL Server Browser, selecione o servio do SQL Server (SQL2005), clique com o boto direito do mouse e aponte p ara Restart. Aguarde alguns instantes a parada e a inicializao do servio. Lembre-se que SQL2005 a instncia do SQL Server do servidor que utilizamos como exemplo.

Passo 4: Para que as conexes remotas funcionem no SQL Server 2005, o Firewall da rede deve ter excees para as instncias do SQL Server 2005 e o servio do SQL Server Browser. Para exemplificar, colocaremos as excees no Firewall do prprio Windows. Caso voc utilize outro Firewall, voc deve ler sua documentao para realizar o procedimento de liberao dos programas utilizados.

33

O Firewall do Windows est presente nas instalaes do Windows XP com Service Pack 2 ou superior. Para acessar o Firewall do Windows, v em Iniciar > Painel de Controle > Firewall do Windows ou digite firewall.cpl em Iniciar > Executar e clique em OK. A liberao no Firewall deve ser feita para cada instncia que ter suas conexes remotas permitidas. Realizar estas excees em cada instncia do SQL Server necessria pelo fato de ser permitido instalar diversas instncias do SQL Server em um mesmo servidor. Cada instalao do SQL Server chamada de instncia, e cada instncia pode ter quantos Bancos de Dados forem necessrios, podendo ser repetidos ou no em uma instncia ou outra. Para colocar uma instncia do SQL Server nas excees do Firewall, devemos abrir a aba Excees do Firewall do Windows, clicar em Adicionar Programa, procurar o arquivo SqlServr.exe que por padro, encontra-se na pasta C:\Arquivos de Programas\Microsoft SQL Server\MSSQL.1\MSSQL\Binn.

34

35

A pasta MSSQL.1 a pasta referente instncia 1 do SQL Server. Se for colocar uma exceo para uma segunda instncia do SQL, o arquivo SqlServr.exe deve ser localizado na pasta MSSQL.2. Para colocar uma exceo ao servio do SQL Server Browser, devemos seguir os mesmos passos que percorremos para colocar exceo instncia do SQL Server, a nica diferena ser procurar o arquivo SqlBrowser.exe que por padro est na pasta C:\Arquivos de Programas\Microsoft SQL Server\90\Shared.

36

37

Estes passos apresentados auxiliam a conexo remota com o Servidor de Banco de Dados atravs de mquinas clientes. Podemos ver que seguindo os passos corretamente, o acesso de aplicaes e de ferramentas administrativas deixou de ser exclusivamente da mquina do Servidor de Banco de Dados, e passou a ter acessos liberados para outras mquinas da LAN (Local Area Network). Lembrando que, para acessar uma instncia do Banco de Dados, voc ter que colocar um usurio e senha vlidos para realizar a conexo

38

Configurando os Servios e Conexes do Microsoft SQL Server 2005


Uma das tarefas rotineiras de um Administrador de Banco de Dados configurar o SQL Server, estabelecendo os servios disponveis, formas de conexo ao servidor e recursos disponveis para as instncias instaladas. Em verses anteriores, realizar este trabalho consumia muito tempo, principalmente em ambientes distribudos ou com vrios servidores distribudos pela rede. Pensando em agilizar o trabalho dos DBAs, o Microsoft SQL Server 2005 vem com duas ferramentas que permitem a configurao dos servios, conexes e recursos de instncias: o SQL Server Configuration Manager e o SQL Server Surface Area Configuration. Estas ferramentas oferecem ao Administrador o poder de realizar todas essas configuraes em instncias locais e remotas, de forma simples e eficiente.

Configurando Servios e Rede com o Configuration Manager O SQL Server Configuration Manager o utilitrio baseado no sistema de console (snap-in) responsvel por gerenciar os servios relacionados s instncias locais do SQL Server e os protocolos de conexes permitidos. Esta ferramenta est localizada no grupo Configuration Tools, presente na pasta Microsoft SQL Server 2005 do menu iniciar. Ao execut-lo, exibida uma janela semelhante Figura 1.

Figura 1. SQL Server Configuration Manager.

39

O Configuration Manager gerencia trs caractersticas do servidor, que esto localizados no lado esquerdo da janela. Estas caractersticas so: SQL Server 2005 Services: Este item responsvel por todos os servios relacionados ao SQL Server. Nesta opo possvel iniciar, pausar, parar e reiniciar um servio, alm de definir seu modo de inicializao (automtica, manual ou desativada). SQL Server 2005 Network Configuration: Esta opo permite ao Administrador configurar os protocolos de rede que o SQL Server ir aceitar. A verso 2005 suporta quatro protocolos: TCP/IP, Pipes Nomeados, VIA e Memria Compartilhada. SQL Native Client Configuration: Define a ordem dos protocolos utilizados pelos clientes que acessam o SQL Server e a criao de Alias de conexes.

O primeiro passo ao configurar o servidor definir como sero iniciados os servios. Caso o DBA tenha instalado todos os servios disponveis, o SQL Server 2005 trar 7 (sete) itens: SQL Server 2005: Este o principal servio do SQL Server, sendo responsvel por toda a gerncia dos bancos de dados do servidor. O servio SQL Server Agent depende deste servio. SQL Server Browser: Fornece informaes sobre as instalaes existentes do SQL Server em um servidor para aplicativos clientes, como o SQL Server Management Studio. Desta forma, o usurio consegue encontrar facilmente a instncia que deseja se conectar. SQL Server Analysis Services: Servio responsvel pela anlise de dados e a gerao de informaes que do suporte a softwares de apoio a deciso. a principal ferramenta de Business Intelligence. SQL Server Integration Services: Responsvel pela importao, transformao e exportao de dados, atravs de pacotes customizveis. Utilizando para integrar diferentes fontes de dados. SQL Server Reporting Services: Fornece componentes para a criao de relatrios de dados relacionais e de anlise. Este servio precisa do IIS (Internet Information Services) para sua execuo. SQL Server FullText Search: Servio responsvel pela execuo de buscas em dados no estruturados (textos). SQL Server Agent: Servio de execuo de tarefas agendadas e envio de alertas, de acordo com o estado do banco e do servidor.

Para verificar o estado de cada um destes servios e alterar suas propriedades, abra o item SQL Server 2005 Services. O Configuration Manager exibir uma tela idntica a Figura 2. No exemplo da figura, todos os servios esto ativados.

40

Figura 2. Servios do SQL Server 2005. Interessante notar que, ao lado do nome de alguns servios do SQL Server, o nome da instncia relacionada a este servio exibido. Caso voc possua um servidor com diversas instncias do SQL Server, os servios faro referncia instncia a qual eles pertencem. Servios sem o nome da instncia indicam que so comuns a todas as instalaes do SQL Server no servidor, como o caso do navegador (Browser) e do servio de integrao (Integration). Para iniciar um servio, clique com o boto direito em cima do nome e escolha a opo Start. Tambm possvel pausar, parar e acessar as propriedades de um servio com o menu rpido. Nas propriedades do servio, a parte mais importante a definio do modo de inicializao do servio, na guia Servio. Um servio pode ser iniciado automaticamente (quando o servidor ligado), manualmente (atravs de programas ou pelo prprio Configuration Manager) ou desativado (no iniciado de nenhuma forma). A Figura 3 mostra a configurao do modo de inicializao do servio SQL Server para Automtico (Automatic).

41

Figura 3. Propriedades do servio do SQL Server 2005. Para nosso exemplo, todos os servios devem est em execuo e iniciaro automaticamente. Finalizada esta etapa, a prxima definir as configuraes de rede do nosso servidor de dados. O item SQL Server Network Configuration permite ao Administrador configurar quais protocolos a instncia utilizar. Ao expandir este item, o Configuration Manager exibir os protocolos por instncia presente no servidor. Vale lembrar que a edio Express possui uma limitao de conexes de rede: so suportadas at 10 (dez) conexes simultneas em uma instncia Express. Acima deste valor, o SQL Server retornar um erro para os clientes que tentarem conexo. No exemplo da Figura 4, temos duas instncias do SQL Server 2005 (SQL1 e SQL2) instaladas no servidor.

42

Figura 4. Configurao de rede do SQL Server 2005. Ao acessar o item Protocols for SQL1, so exibidos os protocolos disponveis e os seus respectivos status. O SQL Server 2005 oferece suporte a quatro protocolos diferentes, que so: Shared memory (Memria Compartilhada): Este protocolo permite que voc se conecte a uma instncia SQL Server presente localmente. Este protocolo no pode ser utilizado para acesso via rede. Named Pipe (Pipes Nomeados): Esta opo permite acesso ao SQL Server atravs de diversos protocolos, como o NetBEUI e IPX/SPX. O protocolo definido de acordo com as configuraes do cliente que est acessando. TCP/IP: Protocolo comumente usado para transmisso de dados em redes heterogenias (diversas arquiteturas), como a internet. Oferece padres de roteamento de trfego e configuraes avanadas de segurana. VIA (Virtual Interface Architecture): Protocolo especfico para redes de sistema. Nesta rede, os dados trafegam em alta velocidade e so utilizadas para a comunicao entre servidores e/ou clusters. A edio Express no suporta este protocolo.

Uma caracterstica importante do SQL Server 2005 Express que esta edio vem com o suporte a conexes remotas desativado. Para ativar ou desativar um protocolo, clique com o boto direito no nome do protocolo e selecione a opo desejada. Para o nosso exemplo, os protocolos TCP/IP e Shared Memory estaro habilitados. Os demais continuaro desabilitados.

43

Uma vez finalizada estas configuraes iniciais, o servidor de dados j est pronto para receber as solicitaes dos clientes atravs da rede e localmente, atravs de programas como o Management Studio.

Definindo Estratgia de Modelo de Recuperao para Banco de Dados SQL Server 2005
Uma estratgia para cpia de segurana apenas um plano que determina quando usar cada tipo de backup. Uma definio importante para esta poltica o modelo de recuperao do banco de dados.

De fato, se o servidor SQL Server estiver indisponvel, os seus usurios no podero fazer suas atividades normalmente. Isto resulta em transtornos para os clientes e produtividade comprometida das aplicaes. Como administrador de banco de dados (DBA), sua responsabilidade assegurar que isto no acontea sua companhia. Em outras palavras, voc precisa garantir que o servidor SQL Server esteja disponvel com mnimo ou nenhum tempo ocioso. Naturalmente que desastres acontecero, e quando eles surgirem, seu papel recuperar o servidor SQL Server o mais rpido possvel.

Apresentaremos uma srie de artigos que visa cobrir o que voc tem de fazer para manter o seu servidor SQL Server disponvel tanto quanto possvel e recuper-lo em caso de um desastre.

Selecionado e Configurando o Modelo de Recuperao

Antes de voc comear a realizar cpias de seus bancos de dados e logs de transaes, voc precisa entender e configurar o modelo de recuperao que ser usado para seu banco de dados. Conhecer qual modelo que voc deve utilizar, afeta diretamente em que velocidade as suas cpias sero restauradas de maneira eficiente, aps a ocorrncia de algum incidente. O SQL Server precisa saber antecipadamente que tipos de backups voc planeja realizar em um banco de dados e qual modelo de recuperao escolhido. O modelo de recuperao padro que um banco de dados utiliza o modelo de recuperao FULL. Voc pode selecionar um dos trs modelos de recuperao, de acordo com a sua estratgia de backup, que so:

SIMPLE

44

O log de transaes (Transaction Log) usado muito pouco neste modelo de recuperao. De fato, quase nada registrado no log. Isto significa dizer que a escolha em usar este modelo para seus banco de dados s ser possvel recuperar o ltimo backup. Qualquer modificao feita em seu banco de dados depois do ltimo backup ter sido executado ser perdida, porque estas alteraes no so registradas no log de transaes. Este modelo uma boa escolha para bancos de dados de desenvolvimento onde a maior parte dos dados so dados de teste e que no tm de ser restaurados depois um incidente. Ele tambm uma boa escolha para bancos de dados que no so modificados freqentemente, por exemplo um banco de dados OLAP. Para implementar uma estratgia de backup que inclui somente cpias completas do seu banco de dados, voc deve escolhe o modelo de recuperao SIMPLE.

Faa a conexo com seu servidor SQL Server, escolha o banco de dados em que voc precisa definir o modo de recuperao, clique com o boto direito e escolha a opo Properties. Agora selecione a pgina Options para definir o modelo de recuperao, conforme figura abaixo.

45

BULK-LOGGED

Este modelo registra muito mais informao no log de transaes do que o modelo SIMPLE. A nica informao no registrada so operaes de volume como: SELECT INTO, BCP, BULK INSERT,CREATE INDEX e operaes com os tipos de dados texto e ntext. Isto significa que voc pode recuperar a maior parte dos dados no caso de algum problema, porm s as operaes citadas sero perdidas. Voc pode configurar esta opo antes da execuo de um operao de volume de insero objetivando acelerar esta ao. Voc deve realizar cpia do seu banco de dados imediatamente aps a execuo de operaes de volume. Caso voc escolha esta opo tudo que inserido durante este perodo no estar no log de transaes.

Em alguns bancos de dados, esse modelo de recuperao no pode ser utilizado o tempo todo por causa das limitaes do tamanho do log de transaes e das questes de desempenho que surgem com operaes de volume. Por isso, voc precisa dimensionar a sua necessidade e aplicar o modelo de recuperao mais apropriado.

Para escolher este modelo de recuperao, altere a opo Recovery Model para Bulk-logged, conforme figura abaixo.

46

FULL Este modelo de recuperao informa ao SQL Server que voc quer realizar tambm o backup de log de transaes. Para tornar isso possvel, o SQL Server mantm todas as transaes em um log de transaes at que um backup do log de transaes ocorra. Quando o backup do log de transaes acontece, o SQL Server trunca o log de transaes depois que o backup gravado no dispositivo de backup. No modelo de recuperao SIMPLE, o log de transaes truncado depois da cada ponto de verificao, o que significa que as transaes praticadas so excludas do log de transaes. Usando este modelo, voc ser capaz de recuperar seu banco de dados at o minuto aps acontecer um determinado problema. Esta uma boa opo de modo de recuperao para a maior parte de bancos de dados de produo, porque ele oferece o mais alto nvel de proteo.

Para escolher este modelo de recuperao, altere a opo Recovery Model para FULL, conforme figura abaixo.

47

Importante: Se nenhum backup de log de transaes for feito quando voc tiver utilizando o modelo de recuperao FULL, o seu arquivo de log do banco de dados aumentar at o seu tamanho mximo. CENRIO Voc criou um novo banco de dados em seu Servidor SQL, e voc precisa garantir que est sendo realizada to rapidamente e eficientemente quanto possvel a cpia de segurana. Voc sabe que, para assegurar isto, voc precisa configurar no banco de dados para usar o modelo de recuperao mais adequado a sua organizao, portanto voc decide configurar o modelo recuperao para seu novo banco de dados.

1. Em seu servidor SQL Server, clique com o boto direito em Databases e selecione New Database, conforme figura abaixo.

48

2. Digite o nome do seu banco de dados, conforme mostrado abaixo.

49

3. Selecione a pgina Options e configure o modelo de recuperao para sua base de dados, conforme sua estratgia de backup e clique em OK.

Importante: A primeira coisa em que voc deve ter em mente qual o nvel de recuperao que voc necessita ter para este novo banco de dados. Observe atenciosamente cada um dos modelos apresentados, a fim de que sua escolha para o modelo de recuperao seja a mais adequada possvel

Criao e Restaurao de Backup no SQL Server 2005

Uma das tarefas mais comuns para os Administradores de Bancos de Dados a criao e restaurao de Backups. Criando cpia de segurana da base de dados, o

50

DBA est garantindo que as informaes cadastradas no banco no sero perdidas em caso de falha no Servidor de Dados (quer seja de hardware ou de software). No entanto, no basta ao Administrador apenas criar Backups do banco de dados: ao entender os mtodos de backup que o SQL Server oferece, o DBA passa a contar com um leque de opes para criar suas polticas de backup de forma a equilibrar eficincia e desempenho do servidor, ao mesmo tempo em que miniminiza a perda de dados. Backup Engine do SQL Server 2005 Para entender como o SQL Server 2005 realiza o backup do banco de dados, necessrio entender como funciona a sua Backup Engine. Esta Engine configurada para realizar todas as tarefas relacionadas a cpia dos dados da forma mais rpida possvel, minimizando o impacto na performance do Servidor de Dados. Quando o backup iniciado, a Engine escreve as pginas de dados no dispositivo de backup (Disco ou Fita) sem se preocupar com a ordem. Graas a isso, o SQL Server pode abrir vrios processos para escrever os dados no seu destino, agilizando o processo. Mas como este processo geralmente ocorre em ambientes de produo (com usurios trabalhando com os dados), podem ocorrer alteraes nos dados durante o processo de criao do backup, e isso poderia gerar inconsistncia dos dados. Para evitar este problema, o SQL Server 2005 realiza uma seqncia de tarefas para garantir que ao trmino da criao da cpia de segurana, todos os dados e objetos existentes na base de dados esto copiados no backup. Estes passos so: Travamento do Banco de Dados: Ao travar o banco de dados, o SQL Server fecha todas as conexes existentes. Criao da marca Checkpoint no Log de Transaes: Neste passo, o SQL Server insere uma marca chamada Checkpoint. atravs desta marcao que o SQL Server delimita at que ponto do log ser feito o backup inicial. As transaes que forem realizadas durante o processo de criao so copiadas depois de criado o backup inicial. Liberao do Banco de Dados: Depois de criado o Checkpoint, a base de dados ento liberada para receber as transaes durante o processo de backup. Cpia de todas as pginas de dados: Neste passo, ocorre a criao do backup, onde o SQL Server 2005 realiza a cpia de todas as pginas de dados para o destino. Travamento do Banco de Dados: Uma vez copiada todas as pginas de dados, o SQL Server fecha novamente todas as conexes existentes. Criao da marca Checkpoint no Log de Transaes: Novamente, o SQL Server insere a marca Checkpoint no Log de Transaes. Liberao do Banco de Dados: Depois de criado o novo Checkpoint, o SQL Server libera o banco. Extrao de todas as transaes que ocorreram durante o processo de Backup: Atravs dos dois Checkpoints criados no arquivo de log, o SQL Server extrai todas as transaes que foram efetuadas entre as duas marcaes e adiciona ao backup. Isto garante a consistncia dos

51

dados e objetos existentes no backup no horrio de termino da sua criao. Mtodos de Backup no SQL Server 2005 O SQL Server 2005 oferece quatro mtodos de Backups. Estes mtodos so: Full Backup; Differential Backup; Transaction Log Backup; Filegroup Backup.

Cada mtodo possui caractersticas e dependncias especficas, que so utilizadas pelo DBA para decidir quando cada um ser utilizado na sua poltica de backup. Full Backup O Full Backup (Backup Completo) captura todos os dados que esto armazenados no banco de dados. A Engine executa esta tarefa copiando todas as Extents (Uma Extent contm 8 pginas de dados fsicas e contnuas, ocupando 64kb de espao) que possuem objetos do banco alocados. Com este tipo de backup, possvel recriar toda a base de dados. Alm disso, ele sempre est disponvel para o Administrador, independente do Recovery Model (Full, Bulk Logged ou Simple) configurando no banco em questo. O Full Backup pr-requisito para criao dos outros tipos de backup. Differential Backup O Differential Backup (Backup Diferencial) captura todas as Extents que sofreram alteraes desde o ultimo Full Backup. Isso significa que todas as alteraes de dados e objetos realizadas no banco so copiadas e armazenadas. As informaes das Extents alteradas so armazenadas atravs do Extents Map. Extent Map um conjunto de pginas de dados pertencentes ao banco de dados, onde armazenado um mapeamento de todas as Extents usadas pela base de dados. Cada Extent um bit no mapa, de valor inicial 0 (zero). Quando uma Extent sofre alteraes, o SQL Server acessa o mapa e marca com o valor 1. Esta a condio usada pela Backup Engine para realizar o backup diferencial: apenas as Extents que possuem o valor 1 no mapeamento. Quando realizado o Full Backup, todos os valores so zerados. O backup diferencial sempre trabalha em conjunto com o backup completo: caso no exista um backup completo do banco, o SQL Server no permite a criao de um backup diferencial. Graas a integrao com o Full Backup, o Differential Backup tambm independente do Recovery Model configurado na base de dados. Por fim, vale ressaltar que o backup diferencial no a mesma coisa de um backup incremental: cada backup diferencial criado pode substituir todos os backups (Diferenciais e de Log) criados anteriormente at o ultimo backup completo, nos caso de restaurao da base de dados. Transaction Log Backup O Transaction Log Backup (Backup do Log de Transaes) trabalha em cima do log ativo, capturando todas as transaes finalizadas deste o ultimo backup, qualquer que seja o tipo. Este tipo de backup incremental: cada vez que realizado, ele inicia a cpia do ponto em que foi realizado o ultimo backup e copia todas as transaes finalizadas gravadas no log. Ao encontrar uma transao em aberto, o SQL Server finaliza a cpia.

52

Todas as transaes que foram copiadas para o backup so marcadas pelo SQL Server. Esta marcao informa ao SQL Server que a transao em questo pode ser substituda por outra nova, ajudando a minimizar os impactos do crescimento do arquivo de log. Filegroup e File Backup O Filegroup Backup (Backup do Grupo de Arquivos) e os File Backup (Backup do Arquivo) so alternativas de backup em bancos que trabalham com mltiplos arquivos de dados. Enquanto todos os mtodos de backup apresentados at agora realizam a cpia de toda a base de dados, estes backups permitem que voc realize a cpia de cada arquivo e/ou grupo de arquivos pertencentes a um banco de dados de forma isolada. O conjunto de backups de todos os arquivos equivale ao um backup completo da base de dados. A utilizao deste tipo de backup apresenta algumas vantagens: Recuperao dos Arquivos de uma mdia danificada: Ao utilizar o mtodo de backup de arquivos, a recuperao do banco de dados mais rpida nos casos de falha parcial. Imagine um servidor com 3 (trs) discos, e em cada um deles est armazenado um arquivo de dados do banco. Caso um destes discos falhe, s necessrio realizar a recuperao do arquivo que est na mdia danificada, e no do banco inteiro. Realizao de Backups de Arquivos e do Log simultaneamente: Ao realizar o backup de um arquivo, o SQL Server no realiza a etapa de atualizao das transaes que foram realizadas no perodo de criao da cpia, somente a cpia das Extents do banco. Isto permite ao SQL Server a realizao dos dois backups de forma independente. Flexibilidade na poltica de backup: Trabalhar com backup de arquivos permite ao administrador uma maior liberdade no agendamento das tarefas e no gerenciamento das mdias de armazenamento, principalmente nos casos em que o backup completo pode se tornar impraticvel (Bases de dados muito extensas e que trabalham com mltiplos arquivos).

As principais desvantagens da utilizao deste tipo de backup so o aumento da carga administrativa e a dependncia de todos os backups para restaurar o banco de dados (se a mdia que possui um File ou Filegroup Backup falhar, no possvel a restaurao da base de dados). Filegroup Backup e File Backup requer que o Recovery Model do banco seja Full ou Bulk Logged, j que so os backups dos logs de transaes que mantero a consistncia do banco. possvel criar Full Backups e Differential Backups de cada arquivo ou grupo de arquivos do banco de dados. Criando um Backup no SQL Server 2005 O SQL Server oferece duas formas para a criao de backup: atravs do SQL Server Management Studio ou usando comandos Transact-SQL. Em ambos os casos, possvel criar todos os tipos de backups abordados acima. Criando um backup atravs do SQL Server Management Studio Para acessar a janela de criao de backups, abra o Management Studio e expanda a pasta Databases na caixa Object Explorer. Ao expandir, clique com o boto direito no banco de dados que voc deseja criar o backup (no nosso exemplo, o AdventureWorks) e v em Tasks > Back Up. Ao selecionar a opo, exibida a janela Back Up Database, como mostra a Figura 1.

53

Figura 1. Criando um backup Pgina General. A janela Back Up Database divida em duas partes: General (onde voc configura as informaes gerais do backup) e Options (onde voc define algumas aes que sero efetuadas pelo SQL Server ao longo do processo). Na pgina General, o primeiro passo definir qual o banco de dados ser copiado e qual o tipo de backup a ser realizado. Na caixa Database j deve est exibindo o banco AdventureWorks, j que este fora selecionando antes de abrir a janela. A caixa Recovery Model exibe o modelo de recuperao do banco selecionado. Esta informao importante para determinamos quais mtodos de backup estaro disponveis para a base de dados. A caixa Backup Type onde definimos o tipo de backup a ser efetuado (Full, Differential ou Transaction Log). O SQL Server 2005 ainda oferece a opo de voc realizar uma cpia de segurana apenas de um Filegroup ou de um arquivo de dados (*.mdf ou *.ndf) da base de dados selecionada. Para tanto, basta selecionar a opo File and Filegroups da caixa Database Component e definir os nomes dos arquivos ou grupos de arquivos que voc deseja realizar o backup.

54

Aps definido o banco de dados e o mtodo de backup, o segundo passo definir um nome de identificao, uma descrio e a data de expirao do backup criado. A expirao do backup informa ao SQL Server at quando aquele backup vlido. Uma vez vencida a data, o SQL Server poder sobrescrever este backup, substituindo-o por um mais recente. Esta opo ajuda a manter constante o espao do dispositivo de backup (Disco ou Fita) usado na criao dos backups, alm de remover automaticamente backups desatualizados. Voc pode configurar o vencimento informando a quantidade de dias que a cpia ser valida ou determinando uma data para o seu vencimento. Digitando o valor 0 (zero) na caixa After (quantidade de dias) informa ao SQL Server 2005 que este backup no expira. O ultimo passo para configurar o backup a ser criado definir o destino da cpia. O SQL Server 2005 trabalha com duas opes de destino: Disk (Disco) ou Tape (Fita). Voc pode trabalhar com at 64 destinos simultaneamente, de tal forma que o SQL Server dividir o backup entre todos os destinos adicionados nesta opo. A opo de gravao em fita s estar disponvel caso tenha um dispositivo DAT instalado. Para nosso exemplo utilizaremos o backup em disco. Cada destino pode armazenar diferentes tipos de backup de diferentes bases de dados. Por exemplo, posso ter um backup completo do AdventureWorks e trs backups de log de uma base de dados chamada CRM, todos armazenados no mesmo destino. Na hora da recuperao, possvel definir o conjunto de backups a ser restaurado, quando o destino possui mais de um backup armazenado. Por padro, o SQL Server 2005 possui uma pasta chamada BACKUP, onde so armazenados os bancos copiados. esta a pasta que a caixa Destination sugere. Para adicionar um novo destino, clique no boto Add... e ser exibida a janela Select Backup Destination. Nesta caixa, clique no boto ao lado do caminho e na janela Locate Database Files navegue at encontrar o local do arquivo de backup e digite um nome para este arquivo, como mostra a Figura 2.

55

Figura 2. Janela de escolha do destino do backup em disco. Definido o local, clique em OK e depois OK novamente e o SQL retornar a janela principal de criao de backup, mostrando o novo local adicionado a lista de destinos. Para remover um destino, selecione-o na lista e clique no boto Remove. Para ver mais informaes sobre a mdia e os backups que j existem em um destino, selecione-o e clique no boto Contents. Para o nosso exemplo, realizaremos um Full Backup, removeremos o destino padro e adicionaremos o destino C:\Backup\BackupSSMS.bak. Configurado a pgina General, o prximo passo configurar a pgina de Options. Ao selecion-la no menu a esquerda da janela, o Management Studio apresenta a janela de opes, como mostra a Figura 3.

56

Figura 3. Opes do backup Pgina Options. Nesta parte, o administrador pode configurar algumas aes ligadas mdia de destino e outros backups existentes nesta mdia. A janela divida em quatro partes: Overwrite Media, Reliability, Transaction Log e Tape Drive. Em Overwrite Media, o DBA decide como o backup ser gravado no Media Set. Media Set um conjunto de mdias de backup (locais de destinos das cpias), com a finalidade de melhorar a organizao das cpias e facilitar a restaurao do backup. possvel criar um novo Media Set a partir dos destinos configurados, marcando a opo Backup to a new media set, and erase all existing backup sets. Marcando esta opo, basta informar o nome e uma descrio para este novo conjunto. Para utilizar um Media Set j existente, basta marcar a opo Backup to the existing media set. Desta forma, o administrador est informando ao SQL Server que utilizar o conjunto de destinos que j est configurado na caixa Destination. necessrio adicionar na caixa Destination (pgina General) todos os locais que fazem parte do Media Set, caso contrrio o SQL Server no realiza o backup. possvel escolher duas opes em relao ao comportamento do novo backup

57

dentro no conjunto: adicionar o novo backup a lista das cpias j existentes (Append to the existing backup set) ou apagar todos os backups anteriores e adiciona somente o atual (Overwrite all existing backup set). Alm disso, este item oferece a opo de verificar o nome do Media Set e a validade dos backups que j existem (Check media set name and backup set expiration), informando o nome do conjunto de mdia. Isto garante que o backup ser feito nos locais desejados e da forma configurada. Na parte Reliability, o administrador determina se deseja fazer testes no backup criado e na mdia onde ser gravado o backup. A opo Verify backup when finished faz uma checagem no backup recm-criado, garantindo que este foi gravado corretamente. J a opo Perform checksum before writing to media solicita ao SQL Server a execuo de um teste no local onde ser gravado o novo backup, garantindo assim que a mdia est livre de problemas. Quando esta opo est marcada, h uma reduo no desempenho do servidor e um aumento do tempo de criao do backup, conseqncia dos testes que so efetuados na mdia. Opcionalmente, com a opo de teste na mdia marcada, possvel gravar o novo backup em uma mdia que contenha problemas, marcando a opo Continue on error. As opes Truncate the transaction log e Back up the tail of the log, and leave the database in the restoring state estaro disponveis apenas se o backup a ser criado do tipo Transaction Log. A primeira opo marca as transaes antigas existentes no arquivo de log e as remove logicamente, permitindo a substituio por novas transaes. Isso permite a reutilizao do espao do log, minimizando o impacto gerado pelo crescimento do banco de dados e das transaes realizadas. A segunda opo realiza o backup do log que ainda no sofreu backup at aquele instante (todas as transaes que aconteceram desde o ultimo backup) e deixa o banco no estado de restaurao. Neste estado o banco se torna inacessvel para os usurios e evita a perda de dados em caso de restaurao. Esta opo utilizada quando o administrador pretende utilizar o mtodo de restaurao Point-in-time (O SQL Server restaura as transaes at o dia e horrio definido na janela da recuperao). Por fim, na parte Tape drive, o DBA pode solicitar ao SQL Server duas aes. Unload the tape after backup faz com que o SQL Server descarregue a fita do drive aps a criao do backup. Rewind the tape before unloading solicita a rebobinao da fita antes de ser descarregada do dispositivo ( necessrio que a primeira opo esteja marcada). Ambas as opes s estaro disponveis quando o destino das cpias for fita. Feita todas as configuraes desejadas, basta clicar no boto OK e aguardar a execuo do backup. O progresso de criao mostrado na caixa Progress, localizada no canto inferior esquerdo da janela Back Up Database. No final, o SQL Server exibe uma mensagem informando que o backup foi criado com sucesso. Criando um backup atravs de comandos Transact-SQL A linguagem T-SQL oferece o comando BACKUP para efetuar qualquer um dos mtodos de backups apresentados neste artigo. Na Listagem 1 est a sintaxe bsica de criao de um backup completo: Listagem 1. Sintaxe bsica para a criao de um backup. --Setando o banco a ser utilizado USE AdventureWorks; --Criando um backup. Por padro, o backup criado do tipo FULL BACKUP DATABASE AdventureWorks TO DISK='C:\Backup\BackupTSQL.bak';

58

Na sintaxe acima, foi solicitado ao SQL Server a criao de um backup da base de dados AdventureWorks, que foi salvo no destino C:\Backup\BackupTSQL.bak. Repare que no comando necessrio informar o tipo e o endereo do destino. Para efetuar o backup diferencial, o comando o mesmo do apresentado acima, adicionando a opo WITH DIFFERENTIAL no final do comando. Veja um exemplo na Listagem 2: Listagem 2. Sintaxe para a criao de um backup diferencial. --Setando o banco a ser utilizado USE AdventureWorks; --Criando um backup do tipo DIFFERENTIAL BACKUP DATABASE AdventureWorks TO DISK='C:\Backup\BackupTSQL.bak' WITH DIFFERENTIAL; Veja que o destino o mesmo do backup criando na Listagem 1. Isto possvel graas capacidade do SQL Server de armazenar backups de tipos e de bancos diferentes no mesmo destino, como visto anteriormente. Para realizar o backup do log de transaes, o comando muda para BACKUP LOG. Observe a Listagem 3: Listagem 3. Criao de um backup do log de transaes. --Setando o banco a ser utilizado USE AdventureWorks; --Criando um backup do LOG BACKUP LOG AdventureWorks TO DISK='C:\Backup\BackupLOG.bak'; No exemplo acima, foi criado um novo arquivo de backup, onde as transaes que aconteceram deste o ultimo backup (no nosso exemplo, o diferencial) so copiadas. Por fim, para realizar o backup de um arquivo, a sintaxe idntica ao da criao de um backup da base de dados, adicionando a clausula FILE no comando. Observe um exemplo de backup do arquivo AdventureWorks_Data.mdf para o arquivo BackupFILE.bak na Listagem 4: Listagem 4. Criao de um backup de um arquivo. --Setando o banco a ser utilizado USE AdventureWorks; --Criando um backup do LOG BACKUP DATABASE AdventureWorks FILE='AdventureWorks_Data' TO DISK='C:\Backup\BackupFILE.bak'; Repare que no necessrio informar a extenso do arquivo de dados na clusula FILE. Para realizar o backup de um FILEGROUP, o procedimento idntico. Confira na Listagem 5: Listagem 5. Criao de um backup de um grupo de arquivos. --Setando o banco a ser utilizado USE AdventureWorks; --Criando um backup do LOG

59

BACKUP DATABASE AdventureWorks FILEGROUP='PRIMARY' TO DISK='C:\Backup\BackupFG.bak'; No final, aps a criao de todos os backups sugeridos acima, os arquivos armazenados no local C:\Backup so os mostrados na Figura 4.

Figura 4. Listagem dos arquivos criados. Concluso O procedimento de criao de backups uma constante no dia-a-dia do Administrador de Banco de Dados. Neste artigo apresentamos o funcionamento da Backup Engine, responsvel pela cpia dos dados. Mostramos como criar todos os tipos de backup atravs do SQL Server Management Studio e utilizando comandos Transact-SQL. Na prxima parte, veremos como restaurar os backups criados neste artigo.

Entendendo o processo de Restore no SQL Server 2005 Restaura um banco consiste, basicamente, em operaes que recriam os objetos da base de dados at um ponto especfico no tempo. Este ponto o momento em que a criao do backup foi realizada e finalizada. Diferente da criao do backup, o processo de restaurao seqencial. Desta

60

forma, o SQL Server garante a consistncia dos dados, mas acaba consumindo mais tempo e recursos do servidor. Por reescrever todas as pginas de dados, o processo de restaurao no apenas pode ser utilizado para fins de substituio de uma base originalmente defeituosa, mas tambm em processos de transferncia de bancos de dados para novos servidores SQL Server. Alm disso, vale lembrar que uma operao de Restore pode se resumir em um nico passo onde apenas um Backup Completo recuperado e o banco passa a esta disponvel para os usurios e receber transaes. Entretanto, na grande maioria dos casos, o cenrio exige que o Administrador restaure um conjunto de backups, possibilitando assim a minimizao da perda de dados. Em ambientes de alta disponibilidade, cinco minutos de perda de dados podem significar a eliminao de milhares de registros. Por fim, uma observao importante: durante todo o processo de restaurao, o banco fica inacessvel para todos os usurios. Ele s se tornar acessvel no momento em que o banco estiver no estado Restored (Restaurado). A nica exceo desta regra o processo Online Restore, que veremos adiante neste artigo. Mtodos de Restaurao no SQL Server 2005 Baseado nos mtodos de Backups existentes, o SQL Server 2005 oferece quatro mtodos de Restore. Estes mtodos restauram os seguintes tipos de backup: Full Backup; Differential Backup; Transaction Log Backup; Partial Backup.

Dependendo da poltica de criao de backups e do conjunto de cpias existente, cada mtodo possui caractersticas e dependncias especficas, que organizam e agilizam a recriao do banco de dados. Restaurando um Full Backup Na grande maioria dos casos, o primeiro passo no processo de restaurao a recriao completa da base de dados at um ponto especfico no tempo, para que ento o DBA aplique backups complementares que atualizem o banco para o estado desejado. Este processo comea com a restaurao de um Full Backup (Backup Completo). No artigo anterior, vimos que o backup completo possui todas as Extents que compem um banco de dados e, conseqentemente, todo o seu contedo. A operao de restaurao, nos processo de reconstruo da base de dados, grava todas as pginas de volta no servidor seguindo a seqncia original do banco. Desta forma, o processo de Restore garante a consistncia dos dados, mas acaba consumindo mais tempo. A restaurao do Full Backup pr-requisito para a utilizao dos outros tipos de restaurao de backup. Restaurando um Differential Backup Antes de restaurar um Differential Backup (Backup Diferencial), duas condies devem ser satisfeitas: Backup Completo Restaurado: Como o backup diferencial grava todas

61

as Extents alteradas desde o ultimo backup completo, necessrio a restaurao do backup completo (ou seja, as Extents originais) para ento aplicar o Differential Backup. A base de dados deve est no modo Recovering: Ao realizar o backup de um arquivo, o SQL Server no realiza a etapa de atualizao das transaes que foram realizadas no perodo de criao da cpia, somente a cpia das Extents do banco. Isto permite ao SQL Server a realizao dos dois backups de forma independente.

Uma vez estas condies atendidas, o SQL Server 2005 ento permite a restaurao da cpia de segurana. Durante esta operao, as Extents armazenadas no backup sobrescrevem as j existentes no servidor, atualizando assim o contedo do banco de dados. Por fim, vale ressaltar que o backup diferencial substitui todos os backups (Diferenciais e de Log) criados anteriormente. Desta forma, para o Administrador, s h a necessidade de restaurar apenas o ultimo backup diferencial disponvel. Restaurando um Transaction Log Backup Ao criar um Transaction Log Backup (Backup do Log de Transaes), o SQL Server armazena no destino a seqncia de transaes que foram efetuadas desde o ultimo backup at o instante atual. Esta seqncia de transaes so ordenadas pelos seu LSN (Log Sequence Number Nmero de Seqncia no Log). Sendo assim, quando o DBA executa a restaurao de um backup do log de transaes, o SQL Server l as transaes armazenadas na cpia de segurana e as executa no banco de dados, atualizando-o at o instante em que esse backup foi criado. Desta forma, os backups do log s podem ser aplicados aps a restaurao de outro backup de qualquer tipo (Completo, Diferencial ou de Log). Como as transaes so ordenadas pelo LSN, o Administrador possui a oportunidade de restaurar a base de dados at um ponto especfico. Esta caracterstica, aliada ao fato de que o log independente do banco, possibilita uma maior flexibilidade na hora de restaurar uma base de dados. Para entender as vantagens que este tipo de backup oferece no processo de restaurao, apresentaremos algumas situaes de restaurao. Imagine a existncia de um servidor de dados SQL Server 2005 com uma aplicao CRM (Customer Relationship Management). Certo dia, os arquivos de dados (*.mdf e *.ndf) desta base so danificados e o banco torna-se inacessvel. Aps verificar o problema, o Administrador decide ento restaurar o banco de dados. Nesta situao, como minimizar a perda de dados, j que o banco est inacessvel? Independente do ultimo backup que o Administrador possua, possvel realizar o backup do log de transaes mesmo com a base de dados danificada, j que as transaes so armazenadas em um arquivo diferente (*.ldf). Logo, o Administrador consegue realizar um Transaction Log Backup e assim copiar todas as aes que foram efetuadas no CRM at o instante da falha. De posse deste backup e de um backup completo (lembre-se que o backup do log s pode ser efetuado aps a criao de, pelo menos, um Full Backup), o SQL Server permite restaurar o banco para o instante antes da falha e assim minimizar a perda de dados. Outra utilizao do backup do log a de facilmente reverter, por exemplo, a remoo de uma tabela acidentalmente por um usurio: basta restaurar o banco

62

at o instante anterior ao comando executado pelo usurio. Mas lembre-se que, durante o processo de Restore, o banco fica indisponvel para todos os usurios. Nestes casos, para restaurar objetos removidos acidentalmente sem afetar o funcionamento do restante do sistema, recomenda-se restaurar os backups para um novo banco at o instante anterior da remoo; deste ponto copiar o objeto e colar na base de dados original. Restaurando um Filegroup e File Backup A restaurao de um Filegroup Backup (Backup do Grupo de Arquivos) ou de um File Backup (Backup do Arquivo) efetuada de forma semelhante ao backup completo. A grande diferena est na possibilidade de restaurar apenas uma parte do banco de dados, minimizando a inacessibilidade do servidor. Desta forma, o administrador tem a vantagem de s restaurar a parte (arquivo ou grupos de arquivos) danificada, enquanto o restante do banco de dados continua disponvel. Este tipo de restaurao tambm chamado de Partial Restore (Restaurao Parcial). Entretanto, vale lembrar que, em falha total do banco, todos os backups dos arquivos so necessrios para restaurar o banco de dados (se a mdia que possui um File ou Filegroup Backup falhar, no possvel a restaurao da base de dados). Restaurando um Backup no SQL Server 2005 O SQL Server oferece duas formas para a restaurao de backup: atravs do SQL Server Management Studio ou usando comandos Transact-SQL. Em ambos os casos, possvel restaurar todos os tipos de backups abordados acima. Restaurando um backup atravs do SQL Server Management Studio Para acessar a janela de restaurao de backups, abra o Management Studio e clique com o boto direito na pasta Databases e selecione a opo Restore Database.

63

Figura 1. Restaurando um backup Pgina General. A janela Back Up Database divida em duas partes: General (onde voc configura as informaes de destino e da fonte da restaurao) e Options (onde voc define algumas aes que sero efetuadas pelo SQL Server ao longo do processo). Na pgina General, o primeiro passo definir qual ser o nome do novo banco de dados. Voc pode escolher um nome da lista de bancos j existente no servidor ou digitar o seu prprio. Algumas observaes so vlidas em relao a esta propriedade. Se voc escolher uma base j existente e realizar a operao de restaurao, todas as operaes que foram efetuadas desde a criao do backup so perdidas. Outro fato importante de ser destacado que o nome da base no precisa, necessariamente, ser igual ao nome da base de dados que foi efetuado o processo de backup. Isso permite ao Administrador criar uma cpia do banco de dados sem afetar a base que est em produo. Depois de escolhido o nome da base de dados destino, o prximo passo configurar at que momento voc deseja restaurar esta base. Como explicado no artigo anterior, possvel voc restaurar um banco de dados at um momento no tempo. Este tipo de restaurao chamado de Point in Time (Ponto no Tempo). Para escolher um determinando momento, basta voc clicar no boto eo

64

Management Studio apresentar a janela Point in Time Restore, como mostra a Figura 2.

Figura 2. Janela Point in Time Restore. Nesta janela, voc pode escolher duas opes: The most recent state possible: Esta opo informa ao SQL Server que o banco de dados deve ser restaurado at o estado mais recente disponvel. Ou seja: at o momento em que o backup foi finalizado. A specific date and time: Como o nome j diz, esta opo permite que voc selecione uma data e um horrio especfico. Uma vez configurada estas opes, o SQL Server 2005 ira realizar a restaurao do banco de dados at este instante do tempo. Os dados que existem aps este momento no tempo no so restaurados. Isto permite ao DBA uma grande flexibilidade, j que permite, por exemplo, restaurar a base de dados at o instante anterior a uma transao indesejada.

Aps definido as informaes de destino, o prximo passo configurar a origem dos dados e quais Sets. Este passo divido em duas parte: em uma, voc define de qual banco de dados ou arquivo os dados sero restaurados; na segunda, voc escolhe quais backups sero restaurados. A opo From Database permite ao Profissional restaurar o backup de uma base de dados existente no histrico de backups realizados pelo SQL Server. Este histrico fica armazenado na base de sistema msdb, toda vez que um backup criado pelo Servidor (Interessante notar que, ao solicitar a excluso de uma base de dados atravs do Management Studio, o SQL Server 2005 pergunta se voc deseja remover tambm o histrico de Backup e Restore deste banco de dados). J a opo From Device permite ao Administrador navegar e selecionar arquivos ou dispositivos que possuem as cpias desejadas. Ao selecionar esta opo, possvel adicionar arquivos e dispositivos clicando no boto Specify Backup, como mostra a Figura 3. , exibindo assim a janela

65

Figura 3. Janela Specify Backup. Esta janela possui os campos Backup Media, onde voc define o tipo de mdia do backup (Arquivo, Dispositivo de Backup ou Fita); e Backup Location, onde so exibidas as localizaes dos backups. Para adicionar um novo arquivo a esta lista, clique no boto Add e navegue at encontrar o arquivo que possui a cpia do banco que voc deseja restaurar e clique em OK. A janela Specify Backup passa a mostrar a localizao do arquivo selecionado (como mostra a Figura 3). Depois da localizao do backup ser adicionado lista, possvel realizar duas aes: verificar o seu contedo, atravs do boto Contents; ou remove-lo da lista, usando o boto Remove. O boto Contents possui uma grande finalidade: exibe os detalhes dos backups que esto armazenados dentro do arquivo ou dispositivo selecionado, atravs da janela Device Contents (Figura 4). Isto se torna bastante til quando voc tem vrias cpias e no sabe em que arquivo ou fita est armazenado um backup especfico. Esta funcionalidade idntica ao comando Transact-SQL RESTORE HEADERONLY.

66

Figura 4. Janela Device Contents. Uma vez definidos os locais de backup, basta clicar no boto OK para fechar a janela Specify Backup e retornar janela Restore Database. Ao retornar a janela Restore Database, o Management Studio passa a listar os backups que esto armazenados nos locais selecionados, para que o Profissional selecione quais cpias restaurar. No exemplo mostrado na Figura 1, o SQL Server oferece a restaurao de um Backup Completo da base de dados AdventureWorks. Definidas as propriedades gerais da restaurao, a prxima ao configurar as opes desta restaurao. A pgina Option responsvel por definir as propriedades de uma restaurao. Estas propriedades incluem a definio dos nomes e locais dos arquivos de dados e log, o estado de recuperao do banco de dados (Recovery Model) e algumas propriedades inerentes ao processo de recriao da base de dados. Observe a Figura 5:

67

Figura 5. Restaurando um backup Pgina Options. Da mesma forma que a pgina anterior, a pgina Options dividida em duas partes: Restore Options e Recovery State. Na primeira parte, o SQL Server 2005 oferece ao administrador algumas propriedades que alteram o comportamento do processo de Restore. So elas: Overwrite the existing database: Esta opo permite que o processo de restaurao sobrescreva o banco atual com a cpia a ser recuperada. Ao marcar esta opo, o SQL Server substitui as pginas de dados atuais pelas contidas na cpia. Uma considerao importante sobre esta opo que o banco a ser sobrescrito no necessariamente o mesmo existente na cpia, mas sim o informado na pgina General, no campo To Database. Esta ao no pode ser desfeita. Preserve the replication settings: Em caso de restaurao de bancos publicados para replicao (duplicao), o SQL Server permite o Restore deesta bases publicadas em outros servidores diferentes do servidor de origem, trazendo consigo todas as configuraes da replicao configurada anteriormente. Esta opo s estar disponvel caso o estado de recuperao do banco de dados seja definido como RESTORE WITH RECOVERY. Prompt before restoring each backup: Ao marcar esta opo, o SQL

68

Server pergunta ao DBA, aps a restaurao de um backup, se deseja continuar com o processo. Esta opo utilizada quando o Administrador define a restaurao de mltiplos backups na guia General, atravs da lista Select the backup sets to restore. Propriedade extremamente til nos casos em que os backups esto distribudos em vrias fitas e seu servidor s possui um dispositivo para leitura: nos momentos de interrupo, o Administrador realiza a troca da fita e clica no boto OK para prosseguir com o processo. Caso o Administrador clique no boto NO, processo ser interrompido e o banco ficar no estado de restaurao RESTORE WITH NORECOVERY. Restrict Access to the restored database: Esta opo restringe o acesso ao banco, permitindo apenas que usurios dos papeis db_owner, dbcreator ou sysadmin acessem a base de dados.

Depois destas propriedades, a janela Restore Database oferece ao Administrador a possibilidade de definir o local dos arquivos de Dados e de Log da base a ser restaurada. Na primeira coluna, o SQL Server exibe os nomes originais dos arquivos do banco de dados. Na segunda coluna, o administrador pode definir qual ser o novo local de cada arquivo da base de dados, clicando no boto escolhendo o destino. e

Depois de definidas as propriedades do processo de restaurao, vem o passo mais importante desta janela: Recovery State. Esta opo define o comportamento do banco de dados aps o processo de Restore. So trs opes disponveis: RESTORE WITH RECOVERY: Esta opo informa ao SQL Server que, aps a restaurao, o banco de dados recuperado j estar disponvel para utilizao pelos usurios. Esta opo ser utilizada nos casos em que a base de dados s possui um backup a ser restaurado. Uma vez restaurado no modo RECOVERY, no possvel aplicar o Restore do Log de Transaes, uma vez que a base j recebeu novas transaes. RESTORE WITH NORECOVERY: Tambm chamado de Recovering State, esta opo informa ao SQL Server que o banco de dados ainda receber outros backups. Neste estado, a base ainda no aceita conexes de usurios, mantendo-o intacto at que seja restaurado o ltimo backup com a opo RECOVERY WITH RECOVERY. Utilize esta opo quando o banco a ser restaurado possui vrios conjuntos de backups (Exemplo: restaurar um Full Backup e em seguida um Differential Backup: o completo ser restaurado como NORECOVERY; o diferencial como RECOVERY). RESTORE WITH STANDBY: Informa ao SQL Server que a base restaurada estar no modo STANDBY, permitindo acesso no modo somente leitura. Ao escolher esta opo, o DBA define o local do arquivo que permitir desfazer as alteraes realizadas pelo STANDBY. Utilize esta opo no seguinte cenrio: o Administrador deseja restaurar o banco para um momento especfico, mas ele no possui nenhuma informao precisa sobre este momento (No tem idia exata do horrio e nem da transao realizada). A soluo seria restaurar o banco atravs com a opo STANDBY. Desta forma, possvel realizar consultas na base de dados para saber se o momento desejado o atual. Se o momento for posterior, basta realizar a restaurao de mais backups com STANDBY at encontrar o ponto desejado. Nos casos do momento desejado ser anterior ao carregado pelo backup, entra em ao o arquivo do STANDBY, que permite desfazer o ultimo backup. Ao encontrar o momento desejado, basta realizar a restaurao com a opo RECOVERY.

69

Feita todas as configuraes desejadas, basta clicar no boto OK e aguardar a execuo do backup. O progresso de criao mostrado na caixa Progress, localizada no canto inferior esquerdo da janela Restore Database. No final, o SQL Server exibe uma mensagem informando que o processo de restaurao foi realizado com sucesso. Restaurando um backup atravs de comandos Transact-SQL A linguagem T-SQL oferece o comando RESTORE para efetuar qualquer um dos mtodos de recuperao de backups apresentados neste artigo. Na Listagem 1 est a sintaxe bsica de restaurao de um backup: Listagem 1. Sintaxe bsica para a restaurao de um backup. --Setando o banco a ser utilizado USE master; --Restaurando um backup. Por padro, o modo de recuperao RECOVERY RESTORE DATABASE AdventureWorks FROM DISK='C:\Backup\BackupTSQL.bak'; Na sintaxe acima, foi solicitado ao SQL Server a restaurao de um backup que est salvo no destino C:\Backup\BackupTSQL.bak, criando uma base de dados chamada AdventureWorks. Repare que no comando necessrio informar o tipo e o endereo da cpia. Nos casos em que o banco j existe, o Administrador pode sobrescrev-lo usando a opo WITH REPLACE. Na Listagem 2 est um exemplo: Listagem 2. Sintaxe para a restaurao de um banco j existente. --Setando o banco a ser utilizado USE master; --Restaurando um backup de uma base j existente RESTORE DATABASE AdventureWorks FROM DISK='C:\Backup\BackupTSQL.bak' WITH REPLACE; Para restaurar um backup diferencial, o DBA precisa restaurar a cpia completa com a opo NORECOVERY. Depois de restaurado o Full Backup, basta utilizar mesmo comando, s que informando a opo RECOVERY. Veja um exemplo na Listagem 3: Listagem 3. Sintaxe para a criao de um backup diferencial. --Setando o banco a ser utilizado USE master; --Restaurando apenas o Full Backup, com a opo NORECOVERY RESTORE DATABASE AdventureWorks FROM DISK='C:\Backup\BackupTSQL.bak' WITH NORECOVERY; --Restaurando o Differential Backup, com a opo RECOVERY RESTORE DATABASE AdventureWorks FROM DISK='C:\Backup\BackupTSQL.bak' WITH RECOVERY; Veja que o backup o mesmo utilizado na Listagem 1. Isto possvel graas capacidade do SQL Server de armazenar backups de tipos e de bancos diferentes no mesmo destino, como visto anteriormente. Para restaurar o backup do log de transaes, o comando muda para RESTORE LOG. Observe a Listagem 4:

70

Listagem 4. Restaurao de um backup do log de transaes. --Setando o banco a ser utilizado USE master; --Restaurando um backup do LOG RESTORE LOG AdventureWorks FROM DISK='C:\Backup\BackupLOG.bak' WITH RECOVERY; Lembrando que no exemplo acima foi utilizado a opo RECOVERY para restaurar o Log e disponibilizar a base de dados para os usurios. Nos casos em que o Profissional precise restaurar mais de um backup do Log, deve-se utilizar a opo RECOVERY apenas na ltima restaurao e a opo NORECOVERY para as restauraes anteriores. Por fim, para restaurar o backup de um arquivo, a sintaxe idntica a vista anteriormente, adicionando a clausula FILE no comando. Observe um exemplo de restaurao do arquivo AdventureWorks_Data.mdf a partir do arquivo BackupFILE.bak na Listagem 5: Listagem 5. Restaurao de um backup de um arquivo. --Setando o banco a ser utilizado USE master; --Restaurando um backup de Arquivo RESTORE DATABASE AdventureWorks FILE='AdventureWorks_Data' FROM DISK='C:\Backup\BackupFILE.bak'; Repare que no necessrio informar a extenso do arquivo de dados na clusula FILE. Para restaurar o backup de um FILEGROUP, o procedimento idntico. Confira na Listagem 6: Listagem 6. Restaurao de um backup de um grupo de arquivos. --Setando o banco a ser utilizado USE master; --Restaurando um backup do Grupo de Arquivos RESTORE DATABASE AdventureWorks FILEGROUP='PRIMARY' TO DISK='C:\Backup\BackupFG.bak'; Da mesma forma que os mtodos de restaurao acima, possvel utilizar as opes RECOVERY ou NORECOVERY nos casos de restaurao de mltiplos arquivos ou grupos de arquivos. No final, aps a restaurao de todos os backups sugeridos acima, o banco AdventureWorks estar restaurado e disponvel para os usurios, como mostra a Figura 6.

71

Figura 6. Banco de Dados AdventureWorks restaurado. Concluso Mais importante que a criao de backups o procedimento de restaurao destas cpias de segurana feitas pelo Administrador de Banco de Dados. Neste artigo apresentamos o funcionamento do processo de restaurao realizado pelo SQL Server 2005. Mostramos como restaurar todos os tipos de backup atravs do SQL Server Management Studio e utilizando comandos Transact-SQL. Na prxima e ltima parte desta srie de artigos, veremos alguns recursos avanados relacionados a Backup e Restore no SQL Server 2005.

Nos dois primeiros artigos da srie apresentamos todos os conceitos e recursos oferecidos pelo SQL Server 2005 para a criao e restaurao de diversos tipos de cpias de segurana dos dados. Mostramos tambm como gerenciar estas cpias atravs do Management Studio e da linguagem T-SQL. Mas o SQL Server no se limita apenas aos fundamentos apresentados at agora. Existem algumas funcionalidades e recursos que auxiliam os processos de Backup e Restore, resultando em diversas vantagens, tais como: economia

72

de tempo e trabalho do Administrador; minimizao da perda de dados; eficincia na organizao e manipulao das cpias; e reduo do tempo em que a base de dados est indisponvel para seus usurios. Neste artigo, apresentaremos alguns recursos e funcionalidades avanadas que o SQL Server 2005 oferecer para a criao, manuteno e restaurao de backups. Ao longo deste artigo mostraremos exemplos prticos destes recursos, alm de exemplificar os seus cenrios de aplicao. Este artigo o terceiro de uma srie de quatro, que mostra como criar e restaurar backups. Para este artigo, utilizaremos o SQL Server 2005 Evaluation Edition, disponveis para download no site da Microsoft: http://www.microsoft.com/sql/default.mspx. Criando Dispositivos Lgicos de Backup (Backup Devices) Durante o processo de criao de um Backup, um dos passos importantes a definio do destino da cpia a ser criada. Por padro, o SQL Server 2005 oferece duas opes: Disk (Disco) ou Tape (Fita). Estes destinos so chamados de dispositivos fsicos de backup. No Management Studio, esta escolha feita atravs da propriedade Destination da janela Back Up Database. Na Linguagem T-SQL, o destino definido atravs da opo TO DISK/TAPE=Caminho no comando RESTORE. Entretanto, existem alguns casos onde o Administrador necessita organizar logicamente estes destinos. O primeiro caso ocorre quando o Administrador se depara com a necessidade de trabalhar e gerenciar vrios destinos para suas cpias de segurana. Estas cpias so dividas de acordo com regras estabelecidas pelo prprio Administrador, no intuito de organiz-las e assim garantir a segurana dos backups e agilizar o processo de restaurao em caso de falha da base principal. O DBA pode, por exemplos, dividir os backups de acordo com o tipo (Completo, Diferencial e Log), armazenando cada um destes tipos em servidores diferentes; ou ento dividir os backups de acordo com a sua realizao: backups dirios em um local, backups semanais em outro, e assim por diante. O problema neste caso que, medida que a quantidade de destinos cresce, a complexidade no gerenciamento aumenta significativamente, resultando no aumento da carga administrativa. O segundo caso aparece quando o DBA precisa utilizar os comandos BACKUP e RESTORE em seus cdigos T-SQL, informando-os o local de armazenamento do backup. Nestas situaes, o problema fica por conta de alteraes nos destinos: se o DBA possuir 10 (dez) scripts apontando para o servidor SQL1 e precisar alterar para o servidor SQL2, sero 10 (dez) cdigos a serem abertos e alterados. Em ambos os casos, gerenciar os backups utilizando como destino os dispositivos fsicos pode se tornar uma atividade desgastante. Para facilitar a organizao dos backups, o SQL Server 2005 oferece ao Profissional o recurso de criao de dispositivos lgicos de backup (Logical Backup Devices). Ao criar um dispositivo lgico, o SQL Server associa o seu nome ao destino selecionado. Desta forma, o Administrador pode nomear os dispositivos lgicos de acordo com as suas necessidades, criando um padro que facilite a identificao e funo. Alm disso, nos casos onde o dispositivo lgico usado em scripts TSQL, o DBA ganha flexibilidade para realizar alteraes nos destinos dos

73

backups sem alterar o cdigo. Nestes casos, o DBA s precisa remover o dispositivo lgico atual e criar um novo dispositivo com o mesmo nome do antigo, mas com o novo destino desejado. Uma vez feita a modificao, o SQL Server passa a utilizar o novo destino em todos os cdigos automaticamente. Para criar um novo dispositivo de backup, abra o Management Studio e expanda a pasta Server Objects. Ao expandi-la, clique com o boto direito na pasta Backup Devices e selecione a opo New Backup Device. Ser exibida ento a janela Backup Device, como mostra a Figura 1.

Figura 1. Janela Backup Device. A janela Backup Device possui duas propriedades: Device Name e Destination. Na primeira propriedade o Administrador informa ao SQL Server 2005 qual ser o nome lgico do novo dispositivo. A segunda propriedade informa qual o local fsico (Disco ou Fita) onde sero armazenados os backups. Para finalizar, basta clicar em OK e o dispositivo estar criado. Uma vez criado, o dispositivo passa a est disponvel na janela Select Backup Device, durante a criao de um backup, como mostra a Figura 2.

74

Figura 2. Janela Select Backup Destination, com a opo de escolha do Backup Device. Alm disso, o Backup Device oferece informaes sobre as bases de dados copiadas, tipos de backups armazenados, entre outras. Ao clicar com o boto direito em cima do dispositivo e selecionar a opo Properties, o Management Studio exibe a janela de propriedades. Na pgina Media Contents, o SQL Server informa ao Administrador todo o contedo armazenado no dispositivo, como mostra a Figura 3. Este recurso funciona de forma semelhante ao boto Contents, da janela Specify Backup do processo de Restore.

75

Figura 3. Listagem dos Backups armazenados no dispositivo. Uma propriedade interessante deste recurso o suporte a mapeamento de unidades e compartilhamentos de rede como locais para armazenamento dos backups. Nestes casos, quando o Administrador informa um local remoto e clica em OK, o Management Studio exibe uma mensagem, como mostra a Figura 4.

Figura 4. Aviso do Management Studio sobre a verificao do local. Esta mensagem est informando ao Administrador que o local fsico no pode ser verificado e pergunta se deseja criar o dispositivo lgico assim mesmo. Ao clicar em Yes, o SQL Server cria o novo dispositivo e passa a utiliz-lo

76

normalmente. Uma observao importante: nos casos em que o SQL Server 2005 precisa acessar locais remotos, a conta de servio do SQL Server precisa ter acesso ao recurso de rede. Este acesso depende do usurio que est associado ao servio. Esta propriedade definida atravs do SQL Server Configuration Manager, nas propriedades do servio SQL Server. Para criar um dispositivo lgico usando T-SQL, o SQL Server oferece um procedimento chamado sp_addumpdevice. A Listagem 1 possui um exemplo da utilizao do procedimento. Listagem 1. Sintaxe bsica para a criao de um Backup Device. --Setando o banco a ser utilizado USE master; --Criando um dispositivo lgico sp_addumpdevice @devtype = 'disk', @logicalname = 'Nome_Dispositivo_Logico', @physicalname = '\\Servidor\Share\Backup.bak'; Para remover um dispositivo lgico usando T-SQL, utilize o procedimento sp_dropdevice. A Listagem 2 possui um exemplo da utilizao do procedimento. Listagem 2. Sintaxe bsica para a remoo de um Backup Device. --Setando o banco a ser utilizado USE master; --Removendo um dispositivo lgico sp_dropdevice @logicalname = 'Nome_Dispositivo_Logico'; Por fim, este recurso est disponvel em todas as edies do SQL Server 2005. Espelhamento do Backup (Backup Mirrors) Toda vez que o Administrador realiza o processo de criao de um Backup, o SQL Server 2005 cria uma nica cpia da base de dados e a armazena em disco ou fita. Entretanto, em muitos casos, o cenrio exige que o Administrador crie cpias adicionais de um backup e as armazene em locais diferentes do backup original, para se proteger contra problemas relacionados a falhas na mdia. Esta tarefa de suma importncia, visto que os backups so a ltima preveno contra a perda de dados. No SQL Server 2000, o processo de duplicao de um backup completamente manual e desgastante: a partir do backup so criadas as cpias e estas movidas para outro local. Este processo consome muito tempo e recursos do Servidor, alm de favorecer o surgimento de problemas na mdia do backup original, causado pela leitura intensa. O SQL Server 2005 oferece uma nova funcionalidade ao comando BACKUP da Linguagem T-SQL: o Espelhamento (MIRROR). Atravs deste recurso, o Administrador pode criar cpias adicionais de um backup (chamadas de Espelhos) durante o processo de Backup. Desta forma, o backup original e as suas cpias so criadas em um nico momento, minimizando o tempo gasto com o processo e salvando recursos do Servidor. Durante a criao de um backup espelhado, o SQL Server realiza a leitura das

77

pginas dos arquivos de dados apenas uma vez e cria mltiplas cpias. Estas cpias so, ento, escritas em todos os destinos configurados no comando BACKUP simultaneamente. Assim, ao trmino do processo de backup, o SQL Server ter criado o backup e seus espelhos. Entretanto, existem algumas restries em relao ao backup espelhado. Este recurso suporta at 4 (quatro) destinos por comando: um destino normal e trs espelhos. Alm disso, todas as mdias envolvidas no espelhamento devem ser do mesmo tipo: Disco ou Fita (Exemplo: se o backup ser feito em disco, todos os espelhos devem ser tambm disco). Esta restrio garante a reduo do impacto no Servidor de Dados, quando este recurso for utilizado. O recurso de espelhamento oferece suporte a dispositivos lgicos de backup e locais de rede, desde que estes estejam dentro das restries acima colocadas. Para que o SQL Server 2005 realize a criao de um espelho, deve-se usar a clusula MIRROR TO no comando de criao do backup. A Listagem 3 possui um exemplo de criao de um Backup do banco de dados com espelhamento. Listagem 3. Sintaxe bsica para a criao de um backup com espelhamento. --Setando o banco a ser utilizado USE master; --Criando um backup com Espelhamento BACKUP DATABASE AdventureWorks TO DISK='C:\Backup\Original.bak' MIRROR TO DISK='C:\Backup\Mirror.bak' WITH FORMAT; Por fim, observe no final do comando o parmetro WITH FORMAT. A clusula FORMAT um parmetro opcional para o comando BACKUP: este comando utilizado para escrever um novo cabealho na mdia de backup, sobrescrevendo o cabealho anterior e invalidando os backups anteriores. Entretanto, para garantir que as pginas de dados do espelhamento estejam escritas da mesma forma que no backup original, no possvel armazenar mltiplos backups em um arquivo ou fita espelhado. Portanto, a propriedade FORMAT obrigatria para a criao de cpias espelhadas. O recurso de espelhamento s est disponvel na edio Enterprise e Developer

Conjunto de Mdias (Media Set) e Conjunto de Backups (Backup Set) Durante o processo de criao de um backup, o Administrador informa ao SQL Server o destino da cpia a ser criada. Normalmente, esta cpia ser armazenada em um nico arquivo ou em uma fita. Mas, em alguns cenrios, o DBA precisa distribuir o backup em mltiplos destinos, dividindo um nico backup entre vrios dispositivos. A diviso de um backup pode ocorrer, por exemplo, quando o tamanho da base de dados maior que o espao livre dos dispositivos existentes no ambiente. Ou ento quando o DBA decide dividir a carga do processamento da criao do backup entre os vrios dispositivos da rede, minimizando o impacto na performance e agilizando o processo de criao do backup. Nestes casos, para facilitar a administrao dos backups distribudos, o SQL

78

Server oferece o recurso conhecido como conjunto de mdias. Um conjunto de mdias (Media Set) possui um ou mais dispositivos fsicos de backup, onde as parte de um backup so agrupadas e identificadas por um nico nome. Desta forma, ao armazenar o backup em um Media Set, o SQL Server escreve parte dos dados do backup em cada dispositivo que faz parte do conjunto, dividindo o backup. Este conceito funciona de forma semelhante ao RAID 0 (Disk Striping). Um Media Set pode possuir vrios backups armazenados. Cada conjunto de arquivos distribudos pelo conjunto de mdias que compem um nico backup chamado de conjunto de Backups (Backup Set). Ou seja: um Media Set contm um ou mais Backup Set. Para criar um novo conjunto de mdia, o comando BACKUP oferece a clusula MEDIANAME para informar no nome do novo conjunto de mdias. A Listagem 4 mostra um exemplo. Listagem 4. Sintaxe para a criao de um backup com Media Set. --Setando o banco a ser utilizado USE master; --Criando um backup com Media Set composto de trs discos BACKUP DATABASE AdventureWorks TO DISK = 'C:\Backup\P1.bak', DISK = 'C:\Backup\P2.bak', DISK = 'C:\Backup\P3.bak' WITH FORMAT, MEDIANAME = 'Nome_Conjunto_Mdia'; No exemplo acima, o SQL Server cria um Backup Set e o armazena no Media Set. Uma vez criado o conjunto de mdias, os backups subseqentes sero adicionados aps o ltimo Backup Set armazenado em cada dispositivo. No exemplo abaixo, o SQL Server adiciona um novo Backup Set ao conjunto de mdia j existente (Listagem 5). Listagem 5. Criao de um backup diferencial com Media Set. --Setando o banco a ser utilizado USE master; --Criando um backup com Media Set composto de trs discos BACKUP DATABASE AdventureWorks TO DISK = 'C:\Backup\P1.bak', DISK = 'C:\Backup\P2.bak', DISK = 'C:\Backup\P3.bak' WITH MEDIANAME = 'Nome_Conjunto_Mdia', DIFFERENTIAL; Ao trmino do processo, os 3 (trs) dispositivos utilizados no exemplo possuiro 2 (dois) Backup Set: um criado pelo backup completo e outro pelo diferencial. A Figura 5 possui um esquema desta diviso.

79

Figura 5. Distribuio dos Backup Set criados. Para restaurar o backup criado, basta informar o nome do conjunto, utilizando a clusula MEDIANAME no comando RESTORE. A sintaxe idntica ao da criao de um backup. Mas, a funcionalidade mais interessante deste recurso fica por conta da propriedade FILE. Atravs desta opo, o Administrador pode informar ao SQL Server 2005 qual conjunto de backups ele deseja restaurar. No exemplo, cada arquivo *.bak possui 2 (dois) Backup Set. Desta forma, se o Profissional deseja restaurar apenas o backup completo, FILE ser igual a 1; Caso ele queira restaurar apenas a cpia diferencial, FILE receber o valor 2; e assim sucessivamente. A Listagem 5 possui a sintaxe para realizar uma restaurao de cada um dos backups existentes no Media Set. Listagem 5. Sintaxe para a restaurao de um backup com Media Set. --Setando o banco a ser utilizado USE master; --Restaurando o Backup Completo do Media Set RESTORE DATABASE AdventureWorks FROM DISK = 'C:\Backup\P1.bak', DISK = 'C:\Backup\P2.bak', DISK = 'C:\Backup\P3.bak' WITH MEDIANAME = 'Nome_Conjunto_Mdia', FILE=1, NORECOVERY; --Restaurando o Backup Completo do Media Set RESTORE DATABASE AdventureWorks FROM DISK = 'C:\Backup\P1.bak', DISK = 'C:\Backup\P2.bak', DISK = 'C:\Backup\P3.bak' WITH MEDIANAME = 'Nome_Conjunto_Mdia', FILE=2, RECOVERY; Este recurso est disponvel em todas as edies do SQL Server 2005. LABELONLY, HEADERONLY, VERIFYONLY e FILELISTONLY No dia-a-dia de trabalho, o Administrador do Servidor de Dados gerencia mltiplas bases de dados. Cada uma destas bases com seus respectivos backups, armazenados em diversos dispositivos espalhados pelo ambiente. Nestes cenrios, encontrar e gerenciar as informaes de forma gil e segura pode fazer a diferena em casos de falha no ambiente. Logo, aes como: determinar o contedo de cada dispositivo de backup, localizar o backup desejado em meio ao diversos dispositivos, verificar a

80

situao das cpias de segurana e descobrir quais arquivos de dados e de log esto em um destino; so de grande importncia em momentos de dificuldade. O SQL Server oferece quatro comandos T-SQL que retornam informaes e verificam a integridade dos diversos backups existentes no ambiente. So eles: RESTORE LABELONLY; RESTORE HEADERONLY; RESTORE VERIFYONLY; RESTORE FILELISTONLY.

A grande vantagem destes comandos est na possibilidade de extrair informaes do backup, sem a necessidade de restaur-los. Desta forma, o administrador evita o trabalho de restaurar cada backup para descobrir e aplicar o seu contedo. Estes recursos esto disponveis em todas as edies do SQL Server 2005. RESTORE LABELONLY O comando RESTORE LABELONLY retorna informaes sobre as mdias (Media Set) armazenadas em um dispositivo. Este comando utilizando nos casos onde o Administrador precisa descobrir a qual conjunto de mdia aquele dispositivo faz parte. A Listagem 6 exibe um exemplo do LABELONLY. Listagem 6. Sintaxe do LABELONLY. --Setando o banco a ser utilizado USE master; --Exibindo as informaes do dispositivo RESTORE LABELONLY FROM DISK='C:\Backup\P1.bak' RESTORE HEADERONLY O comando RESTORE HEADERONLY retorna informaes sobre os backups (Backup Set) armazenados em um dispositivo. um dos comandos mais utilizando, pois retorna para o Administrador todos os backups armazenados no dispositivo, seus tipos e de quais bases eles pertencem. A Listagem 7 exibe um exemplo do HEADERONLY. Listagem 7. Sintaxe do HEADERONLY. --Setando o banco a ser utilizado USE master; --Exibindo as informaes do dispositivo RESTORE HEADERONLY FROM DISK='C:\Backup\P1.bak' RESTORE VERIFYONLY O comando RESTORE VERIFYONLY realiza uma checagem na integridade dos backups de um dispositivo, verificando se o mesmo legvel. No entanto, este comando no verifica a estrutura de dados existente dentro do backup. Se o backup for vlido, o SQL Server retorna uma mensagem de sucesso. A Listagem 8 exibe um exemplo do VERIFYONLY. Listagem 8. Sintaxe do VERIFYONLY. --Setando o banco a ser utilizado USE master;

81

--Verificando o dispositivo RESTORE VERIFYONLY FROM DISK='C:\Backup\P1.bak', DISK='C:\Backup\P2.bak', DISK='C:\Backup\P3.bak'; O RESTORE VERIFYONLY verifica somente o Backup Set inteiro. por isto que na Listagem 8 possui referncia a todos dos dispositivos que compem o backup. Por fim, uma observao importante: em verses anteriores do SQL Server, o comando RESTORE VERIFYONLY s realizava a verificao do cabealho dos backups. Nestas verses, o VERIFYONLY pode retornar verdadeiro at mesmo se o backup inteiro estiver invlido ou a mdia apresentar algum setor com problemas de leitura, bastando para isto que o cabealho estivesse intacto. No SQL Server 2005, o VERIFYONLY comea realizando a verificao no cabealho. Depois do cabealho validado, ele verifica o Checksum do backup, realiza a leitura nas pginas internas, gera um novo Checksum e o compara com o do backup. Desta forma, o SQL Server 2005 oferece uma maior garantia acerca da validade do backup. RESTORE FILELISTONLY O comando RESTORE FILELISTONLY retorna informaes sobre os arquivos de dados e log (*.mdf, *.ndf e *.ldf) armazenados em um dispositivo. A Listagem 9 exibe um exemplo do FILELISTONLY. Listagem 9. Sintaxe do FILELISTONLY. --Setando o banco a ser utilizado USE master; --Exibindo as informaes do dispositivo RESTORE FILELISTONLY FROM DISK='C:\Backup\P1.bak' Restaurando com Erros na Mdia Perder a base de dados uma situao que nenhum administrador deseja passar. Pior ainda descobrir que o nico backup disponvel est corrompido e que o SQL Server no consegue recuper-lo. Em verses anteriores, problemas relacionados mdia raramente eram detectados antes do processo de criao de BACKUP se iniciar. Depois, ao utilizar o comando RESTORE, o SQL Server removia toda a base de dados (caso j existisse) e comeava o processo de restaurao. Ao indicar o erro, o DBA ento era obrigado a abortar e o processo terminava naquele instante, resultando em uma base invlida. O SQL Server 2005 trs uma opo para o RESTORE, para os casos em que a mdia possui reas defeituosas. Ao utiliza a clusula CONTINUE_AFTER_ERROR, o SQL Server ignora os setores defeituosos da mdia, realiza a restaurao dos setores legveis e finaliza o processo, definindo o banco de dado no estado emergencial. Neste estado, possvel se conectar ao banco e realizar comandos SELECT, mas no possvel a alterao de dados. Desta forma, o administrador consegue acessar os dados legveis e copi-los para uma nova base. A Listagem 10 possui a sintaxe do CONTINUE_AFTER_ERROR. Listagem 10. Sintaxe do CONTINUE_AFTER_ERROR. --Setando o banco a ser utilizado USE master;

82

--Restaurando um backup, ignorando os erros RESTORE DATABASE AdventureWorks FROM DISK='C:\Backup\BackupTSQL.bak' WITH CONTINUE_AFTER_ERROR; Concluso O SQL Server 2005 oferece ao Administrador vrios recursos que facilitam a criao, o gerenciamento e a restaurao de backups. Neste artigo apresentamos alguns destes recursos, tais como a criao de dispositivos de backup, espelhamento, conjunto de mdias e restaurao em caso de problemas com a mdia. Mostramos tambm algumas propriedades do RESTORE, que permite ao Administrador extrair informaes dos dispositivos e realizar verificaes de integridade dos backups.

restore do log no sql server 2005

figura 1 propriedades do banco de dados, verificando modelo de recuperao. quando o modelo de recuperao full todas as atualizaes realizadas no banco de dados so armazenadas no log de transaes, desta forma podemos retornar o

83

banco de dados para qualquer posio do dia. j no modelo simple as atualizaes no so registradas no log e no nosso exemplo no teramos como resolver o problema. para realizarmos um laboratrio semelhante ao caso do ti, vou propor a criao de uma tabela conforme a listagem 1. listagem 1 criao da tabela alunos create table alunos (codigo integer not null, nome varchar(40) not null, datanascimento datetime, endereco varchar(40), cidade varchar(20), primary key (codigo)); insert into alunos values(1,'eusbio lima','15-jun-1988','av.das laranjeiras, 537','caxias do sul'); insert into alunos values(2,'maria da silva','20-may-1992','rua da oliveiras, 23','caxias do sul'); insert into alunos values(3,'joo da silva','01-mar-1994','rua central, 1537','caxias do sul'); agora realize um backup full do banco de dados: backup database sqlmagazine to disk=c:\backup\sqlmagazine.bak

84

figura 2 backup full do banco de dados. agora vamos realizar novas operaes e por fim excluir o registro do aluno 2, conforme apresentado na listagem 2. para facilitar o exemplo execute em separado a excluso do registro e verifique em que hora a operao est sendo executada. listagem 2 operaes adicionais ao banco de dados insert into alunos values(4,'lima lopes','12-dec-1994','rua so joo, 223','caxias do sul'); insert into alunos values(5,'joana souza','31-jan-1993','rua so pedro, 22','caxias do sul'); verificar a hora em que vai executar esta operao delete alunos where codigo = 2; agora temos a mesma situao do nosso amigo do ti: existem informaes anteriores que esto no backup full do banco de dados, temos novas operaes (a incluso de dois registros) e temos a operao que no devia ter sido executada (a excluso do aluno 2).

85

a primeira coisa de devemos fazer agora realizar um backup do log das transaes do banco de dados, conforme apresentado na figura 3.

figura 3 backup do log de transaes do banco de dados. agora podemos ter dois caminhos a seguir, conforme a utilizao do sistema: 1. recuperamos o backup diretamente no banco de dados. 2. restauramos o backup em outra rea ou servidor e copiamos os dados manualmente para o banco de dados original. neste exemplo vamos restaurar diretamente para o banco de dados original. abra a tela de restore do banco de dados, sero relacionados os ltimos backups executados. marque o ltimo backup full e o backup do log de transaes, conforme a figura 4. a seguir clique no boto para escolher um horrio (to a point in time) at onde o restore deve ser executado.

86

figura 4 restore do banco de dados. na tela que ser aberta (figura 5), escolha a opo para especificar a data e hora, e informe os dados indicando um momento posterior as duas incluses na tabela e anterior a excluso do aluno 2.

87

figura 5 informao da data e hora limite para restaurar. agora basta executar o restore e conferir as informaes aps o procedimento. obviamente que todas as operaes realizadas aps a data/hora informada sero perdidas, por isto avalie antes se houve algum outro procedimento importante aps este horrio.

database snapshots
o que so database snapshots um snapshot de banco de dados prov uma viso esttica e somente leitura de um outro banco de dados (origem) num determinado ponto no tempo. podemos criar mltiplos snapshots a partir de um banco de dados, que sero armazenados na mesma instncia de servidor que o banco de dados de origem. snapshots podem ser usados para criar cpias de um banco de dados e usar estas cpias como fonte de consultas e relatrios. durante um evento de erro, o snapshot tambm pode ser usado como uma cpia de segurana (backup) dos dados, permitindo que o um banco de dados seja restaurado ao estado em que este se encontrava quando da criao do snapshot. a perda de informaes est limitada s transaes de atualizao ocorridas no banco de dados desde a criao do snapshot. entre as limitaes envolvendo a criao de snapshots de banco de dados, encontramos as seguintes: um snapshot deve estar localizado no mesmo servidor que o banco de dados origem. snapshots no podem ser criados para os bancos de dados model, master ou temdb. no se pode fazer o backup ou restore de snapshots. no se pode fazer o attached ou dettached de snapshots. snapshots no podem ser criados em parties fat32. todos os snapshots de um banco de dados devem ser apagados antes que o banco de dados origem seja apagado.

88

sql management studio no suporta a criao de snapshots. portanto, snapshots podem ser criados somente atravs de transact-sql.

como os database snapshots funcionam embora que entender como os snapshots funcionam no seja essencial para o uso destes, importante que qualquer desenvolvedor tenha este conhecimento. os snapshots trabalham em nvel de pgina de dados (data-page). antes que uma pgina do banco de dados origem alterada pela primeira vez, a pgina original copiada do banco de dados origem para o snapshot. este processo chamado de uma operao de copy-on-write. o snapshot armazena a pgina original, e desta forma preservando os registros de dados existentes quando o snapshot foi criado. as atualizaes subseqentes nos registros de uma pgina j modificada no afetam o contedo do snapshot. este mesmo processo repetido para cada pgina que alterada pela primeira vez, e desta forma, o snapshot preserva as pginas originais para todos os registros de dados que tenham sido modificados desde a criao do snapshot. para armazenar as pginas originais copiadas, o snapshot usa um ou mais sparse files, que um recurso do sistema de arquivos ntfs, onde, assim que os dados so gravados num sparse file, o ntfs aloca o espao em disco necessrio para armazenar estes dados. inicialmente, um sparse file um arquivo vazio que no contm dados e que ainda no foi alocado espao em disco para armazenar estes dados. quanto mais e mais pginas de dados so modificadas no banco de dados origem, o arquivo vai aumentando de tamanho, podendo chegar ao tamanho do banco de dados de origem. uma operao de copy-on-write mostrada na figura 1. os retngulos claros do diagrama do snapshot representam os espaos no arquivo que no momento no esto alocados. quando ocorre a primeira modificao em uma pgina no banco de dados origem, o database engine escreve no arquivo e o sistema operacional aloca o espao no snapshot para copiar a pgina original pra l. o database engine ento atualiza a pgina no banco de dados origem.

89

figura 1. operao de copy-on-write no snapshot para o usurio, os dados num snapshot parecem que nunca so modificados, pois as operaes de leitura podem ser sempre executadas nas pginas de dados originais. se uma pgina nunca foi modificada no banco de dados origem, uma operao de leitura no snapshot l a pgina do banco de dados origem. a figura 2 abaixo mostra uma operao de leitura num snapshot recm criado, onde o arquivo no possui nenhuma pgina de dados. esta operao de leitura l apenas do banco de dados origem.

90

figura 2. operao de leitura num snapshot recm criado depois que uma pgina de dados tenha sido modificada, uma operao de leitura no snapshot ainda acessa os dados da pgina original, que agora est armazenada no arquivo do snapshot. a figura 3 ilustra uma operao de leitura no snapshot que acessa a pgina de dados depois que esta foi modificada no banco de dados origem. esta operao l a pgina original a partir do arquivo do snapshot.

91

figura 3. operao de leitura no snapshot criando um database snapshot vamos ver ento como um snapshot criado na prtica atravs do uso do transactsql. para esta prtica, usaremos como banco de dados origem o adventureworks, que vem junto com a instalao do sql server 2005. siga os seguintes passos para criar um snapshot usando transact-sql: 1. clique em start, all programs, microsoft sql server 2005 e ento em sql server management studio. 2. na caixa de dilogo connect to server, informe os valores conforme a tabela abaixo. propriedade server type server name authentication 3. valor database engine localhost windows authentication

no sql management studio, clique no boto new query na barra de ferramentas. 4. na nova janela de consulta, entre com o seguinte cdigo transact-sql. create database adventureworks_snapshot1000 on ( name = n'adventureworks_data', filename = n'c:\program files\microsoft sql server\mssql.1\mssql\data\aw_1000.ss') as snapshot of adventureworks 5. 6. clique no boto execute. na janela object explorer, expanda database, database snapshots, e ento confirme a existncia de um snapshot chamado adventureworks_snapshot1000. voc poder precisar fazer o refresh da lista de database snapshots para que o novo snapshot esteja visvel. 7. clique no boto new query. 8. na nova janela de consulta, entre com o seguinte cdigo transact-sql. select addressid, addressline1, modifieddate from adventureworks.person.address where addressid = 10 select addressid, addressline1, modifieddate from adventureworks_snapshot1200.person.address where addressid = 10 9. clique no boto execute e ento observe o resultado. ambas as consultas retornam o mesmo resultado. 10. clique no boto new query. 11. na nova janela de consulta, entre com o seguinte cdigo transact-sql. update adventureworks.person.address set addressline1 = 2500 race court' where addressid = 10 12. clique no boto execute.

92

13. retorne janela de consulta anterior que contm o cdigo select, e ento clique no boto execute. agora, o resultado dever ser diferente, pois o snapshot ainda possui o valor original. 14. feche o sql management studio e clique em no se perguntado para salvar os arquivos.

Restaurando a partir de um Database Snapshot


No artigo anterior sobre database snapshots, falamos sobre o conceito e o funcionamento desse novo recurso que est disponvel na verso Enterprise Edition do SQL Server 2005, assim como tambm vimos um exemplo prtico de sua utilizao. Neste artigo, daremos continuidade ao assunto e veremos como reverter o estado de um banco de dados a partir de um snapshot. Como uma alternativa restaurao de banco de dados a partir de backups, qualquer usurio com permisses de RESTORE DATABASE no banco de dados origem, pode reverter o banco de dados ao seu estado inicial de quando o snapshot foi criado. Esta tarefa pode ser apropriada no momento em que um banco de dados fica inconsistente, como por exemplo, a excluso acidental de uma tabela. importante salientar que ter um plano regular de backup e testar a restaurao destes, fundamental para proteger o banco de dados de erros. O processo de reverter um banco de dados a partir do snapshot subscreve todas as alteraes feitas no banco de dados desde que o snapshot foi criado, copiando as pginas do snapshot de volta ao banco de dados origem. Apenas as pginas que sofreram modificao so revertidas. A operao tambm reconstri o log do banco de dados. A operao de reverter um banco de dados a partir de seu snapshot no suportado quando:

O banco de dados origem possuir filegroups compactados ou marcados como


somente leitura. O banco de dados origem possuir arquivos offline, mas que estavam online durante a criao do snapshot. Existir mais de um snapshot para o mesmo banco de dados. Antes de restaurar um banco de dados importante considerar que: O snapshot uma cpia incompleta dos arquivos de um banco de dados. Durante a operao de restore, tanto o snapshot como o banco de dados so marcados como In Restore e se tornam indisponvel. Como a operao de restore automaticamente reconstri o log do banco de dados, recomendado o full backup do banco de dados e do log antes da restaurao. Como reverter um banco de dados com base no snapshot Vamos ver atravs de um exemplo prtico, os procedimentos para reverter um banco de dados com base em um snapshot. Usaremos como banco de dados origem o AdventureWorks, que vem junto com a instalao do SQL Server 2005. Antes de qualquer coisa, recomendvel que seja feito o backup desse banco de dados. Em seguida, preceda com os seguintes passos: 1. Clique em Start, All Programs, Microsoft SQL Server 2005 e ento em SQL Server Management Studio.

93

2. Na caixa de dilogo Connect to Server, informe os valores conforme a tabela abaixo. Propriedade Server Type Server Name Authentication Valor Database Engine Localhost Windows Authentication

3. No SQL Management Studio, clique no boto New Query na barra de ferramentas. 4. Na nova janela de consulta, execute o seguinte cdigo Transact-SQL para criar um snapshot do banco de dados: CREATE DATABASE AdventureWorks_Snapshot_07102006 ON ( NAME = N'AdventureWorks_Data', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AW_07102006.ss') AS SNAPSHOT OF AdventureWorks 5. Na janela Object Explorer, expanda Database, Database Snapshots, e ento confirme a existncia de um snapshot chamado AdventureWorks_Snapshot_07102006. Voc poder precisar fazer o refresh da lista de database snapshots para que o novo snapshot esteja visvel. Outra forma de listar os snapshots atravs da seguinte consulta ao catlogo sys.databases: SELECT * FROM sys.databases WHERE source_database_id IS NOT NULL 6. Clique no boto New Query. Na nova janela de consulta, execute o seguinte cdigo Transact-SQL: DROP TABLE AdventureWorks.Sales.Individual 7. Clique no boto New Query. Execute as duas consultas abaixo e observe que a tabela Sales.Individual existe apenas no snapshot AdventureWorks_Snapshot_07102006. USE AdventureWorks IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Sales].[Individual]') AND type in (N'U')) PRINT 'Tabela [Sales].[Individual] encontrada no BD AdventureWorks' ELSE PRINT 'Tabela [Sales].[Individual] no encontrada no BD AdventureWorks' USE AdventureWorks_Snapshot_07102006 IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Sales].[Individual]') AND type in (N'U')) PRINT 'Tabela [Sales].[Individual] encontrada no snapshot AdventureWorks_Snapshot_07102006' ELSE

94

PRINT 'Tabela [Sales].[Individual] nao encontrada no snapshot AdventureWorks_Snapshot_07102006' 8. Clique no boto New Query. Na nova janela de consulta, execute o seguinte cdigo Transact-SQL para reverter o estado do banco de dados AdventureWorks. USE master RESTORE DATABASE AdventureWorks FROM DATABASE_SNAPSHOT = 'AdventureWorks_Snapshot_07102006' 9. Retorne janela de consulta anterior que contm o cdigo SELECT, e ento clique no boto Execute. Agora, o resultado dever ser diferente, pois a tabela Sales.Individual existe no banco de dados e no snapshot. 10. Feche o SQL Management Studio e clique em No se perguntado para salvar os arquivos

Resoluo de problemas de Banco de Dados X Desempenho do Servidor


Parte I - Avaliando o uso de Memria Quando um servidor SQL Server 2005 no est funcionando bem, atendendo as exigncias de desempenho esperado, estamos numa situao onde pode ser um resultado de vrias questes conjugadas, que podem ser: do prprio banco de dados, entre as instncias do SQL, ou ainda no desempenho dos recursos fsicos do servidor. Como em qualquer tipo de servidor, os gargalos podem ocorrer por causa da presso em um ou vrios recursos de servidor como memria, disco rgido, I/O, e no uso da CPU. Voc precisa ser capaz de determinar se um sistema est impropriamente configurado para a carga de trabalho, ou se a modelagem de dados encontra-se pobre sendo a principal razo do problema. Iniciaremos uma srie de artigos, objetivando cobrir esta demanda de administrao de Banco de Dados. Comearemos abordando a resoluo de problemas no tocante a desempenho do fsico do servidor como CPU, memria dentre outros. Bem como as ferramentas que voc pode usar para diagnosticar problemas de servidor. As principais ferramentas que voc deve usa para este propsito so as ferramentas de desempenho do Windows Server 2003: System Monitor e Perfomance Logs and Alerts Alm destas, voc pode usar o SQL Server Profiler para investigar o desempenho geral do servidor. Quando voc identificar o recurso fsico sob presso, o SQL Server Profiler pode ajud-lo a determinar por que aquele recurso est se apresentando desta maneira. Os eventos relacionados falhas do SQL Server 2005 so escritos no log de eventos do Windows e bem tambm no log do SQL Server. Voc pode usar o System Monitor para adquirir de imediato valores dos contadores e diagnosticar problemas que podem resultar na degradao de desempenho, e voc pode estabelecer alertas de desempenho para descobrir quando um contador excede ou fica abaixo de um valor predefinido. importante que voc faa um diagnstico quando verificar degradao do desempenho do SQL Server, criando

95

um log para monitorar os contadores por um perodo de 24 horas, por exemplo. Claro que o perodo de anlise deve ser estimado de acordo com a necessidade dos sistemas de Banco de Dados em questo. Voc pode criar logs com os contadores para que sejam executados imediatamente ou em um tempo especifico, e registrar o valor de desempenho dos contadores em intervalos predefinidos. Voc pode criar alertas em que enviam a voc uma mensagem, escrever nos eventos do Application Log, ou iniciar programas executveis se a leitura do contador fica cima ou abaixo de um valor predefinido. Recomendamos que voc observe e monitore os seguintes contadores: Memory: Pages/sec Memory: Available Bytes SQL Server: Buffer Manager: Buffer Cache Hit Ratio Physical Disk: Disk Reads/sec Physical Disk: Disk Writes/sec Physical Disk: % Disk time Physical Disk: Avg. Disk Queue Length Physical Disk: % Free Space Logical Disk: % Free Space Processor: % Processor Time System: Processor Queue Length Network Interface: Bytes Received/sec Network Interface: Bytes Sent/sec Network Interface: Output Queue Length SQL Server: General: User Connections Avaliando o uso de Memria Voc pode identificar gargalos de memria por paginao excessiva, alto consumo de memria, baixa taxa de buffer cache hit, e um alto volume de operaes do disco de leitura e gravao. A lista a seguir mostra os contadores que voc precisar monitorar: Memory: Pages/sec Memory: Available Bytes SQL Server: Buffer Manager: Buffer Cache Hit Ratio Physical Disk: Disk Reads/sec Physical Disk: Disk Writes/sec

Memory: Pages/sec Este contador mede o nmero de pginas por segundo que so paginadas fora da memria principal para a memria virtual(disco rgido). Uma alta leitura indica que a memria do servidor esta sob estresse, com isso ocorre mais paginao e I/O tambm. A paginao uma operao normal no servidor na qual voc precisa manter a um nvel aceitvel. Voc no deve tentar elimin-la. Assumindo que o Servidor SQL a principal aplicao que est sendo executada no servidor, o valor mdio deste contador deve ficar entre zero e 20. Picos maiores do que 20 so normais. Se o seu servidor est com a mdia de mais de 20 pginas por segundo, uma das causas provveis o gargalo de memria. Em geral, quanto mais memria principal o servidor tiver, menor ser paginao que ele tem de executar.

96

Memory: Available Bytes O SQL Server 2005 tenta manter entre 4 e 10 Mb da memria fsica livre. O contador Memory: Available Bytes mede o montante da memria fsica livre no servidor. O valor mdio deste contador deve ser maior do que 5 MB, caso contrrio, o seu servidor pode estar experimentando uma queda de desempenho por causa de estresse sob a memria. SQL Server: Buffer Manager: Buffer Cache Hit Ratio Este contador indica com que freqncia o SQL Server 2005 acessa o buffer e no o disco rgido para pegar os dados. Se o seu servidor est rodando aplicaes OLTP, este contador deve exceder 90%, e de maneira ideal ele deve est perto de 99 por cento. Se a taxa do Buffer Cache Hit ficar menor do que 90%, normalmente indica que a memria est sob presso, reduzindo assim o desempenho geral do SQL Server. Voc tem de tomar ao apropriada (tipicamente, acrescente mais RAM). Se a leitura est entre 90 e 99%, voc no poderia ter um problema real, mas a adio de memria RAM poderia melhor o desempenho. Se o seu banco de dados muito grande, contudo, voc no poderia chegar perto de 99%, mesmo se voc puser o montante mximo da memria RAM no seu servidor. Se o seu servidor est rodando aplicaes do tipo OLAP (online analytical processing), a taxa do contador Buffer Cache Hit pode ser significativamente menor de 90%, em virtude de como trabalha as aplicaes OLAP. Por essa razo, voc deve tratar o valor do contador com a mxima prudncia e us-lo para diagnosticar s se voc j tem evidncia que o SQL Server est acessando o disco rgido mais freqentemente do que ele deveria. De outra maneira, acrescentando mais memria principal quase sempre melhora o desempenho de um servidor SQL Server. Physical Disk: Disk Reads/sec e Physical Disk: Disk Writes/sec Os valores desses contadores podem ser difceis de interpretar, porque o limite aceitvel de transferncia dependem do hardware instalado no seu servidor. Por exemplo, os discos SCSI pode tratar de 50 at 70 operaes de entrada-saida por segundo. Assim, os valores absolutos nos contadores no poderiam indicar que o seu recurso de disco est sob presso, mas uma leitura que cresce dentro de algum intervalo pode indicar a presso crescente no seu recurso de memria. Voc precisa analisar os valores Physical Disk: Disk Reads/sec e Physical Disk: Disk Writes/sec em conjunto com a Memory: Pages/sec, Memory: Available Bytes, e, SQL Server: Buffer Manager: Buffer Cache Hit Ratio para determina se o seu recurso de memria est sob stress. Agora vamos demonstrar como voc pode monitorar seu servidor SQL Server 2005. Em nosso exemplo utilizamos Windows 2003 Server. 1. Na mquina em que voc vai analisar o desempenho sob o recursos de memria procure no menu Programs ou (All Programs), escolhendo Administrative Tools, e em seguida a opo Performance, e clique em System Monitor. 2. Agora vamos adicionar contadores para comear nossa analise (para adicionar os contadores pressione no boto +). Ser mostrado um menu drop-down para que voc selecione o objeto para ser analisado o desempenho, conforme figura abaixo.

97

3. Escolha o recurso que deseja monitorar, em nosso exemplo escolhemos Memory, e pressione Close. 4. Expanda Performance Logs and Alerts e selecione Counter Logs. 5. Escolha New Log Settings. Salve com o nome que melhor lhe convinher e clique em OK. Agora clique em Add Counters. Ser mostrada uma outra janela onde voc pode escolher os contadores que voc deseja verificar, selecione Use Local Computer Counters e em seguida adicione os objetos relativos a memria (Memory). Em nosso exemplo, escolhemos apenas dois para efeito de ilustrao, voc pode utilizar os contadores que recomendamos para avaliar o recurso de memria. Veja tela a seguir.

98

6. Veja que voc poder utilizar um usurio especfico para a execuo desta monitorao em nosso exemplo, colocamos o usurio Administrator. 7. Voc pode ainda agendar a execuo desta monitorao. Na Aba Schedule, voc pode definir o horrio de execuo de acordo com a sua necessidade, conforme figura abaixo.

99

No prximo artigo continuaremos a analisar outros recursos, a fim de que voc possa ter mais condies de resoluo de problemas em seu servidor SQL Server.

Avaliando o uso de Processador

Voc pode avaliar problemas de processamento em servidores SQL Server que possua um nico processador ou em servidores com multiprocessamento( SMP Symmetric MultiProcessing). SMP a definio de um sistema que utiliza dois ou mais processadores para executar suas tarefas Voc tambm pode estabelecer alertas no uso de CPU, mas, isto discutvel, haja vista que voc pode configurar alertas de uso de disco menor do que um determinado valor. O uso de CPU tipicamente 100% quando um servio ou uma aplicao comeam, e um problema s existe se o uso permanecer neste nvel durante um tempo significativo ou se voc detectar uma alta mdia de uso de CPU. Voc avalia a presso no recurso de processador monitorando o Processador e Objetos do Sistemas (System Objects). Os contadores que voc pode usar tipicamente para identificar o uso de CPU so os seguintes:

100

Processor: % Processor Time System: Processor Queue Length

Processor: % Processor Time

Cada unidade de processamento central (CPU) em seu servidor SQL Server 2005 uma instncia deste contador, que mede a utilizao de cada CPU individual. Se o percentual total do contador Processor Time (_Total) excede 80 por cento durante perodos contnuos de 10 minutos ou mais durante um perodo de monitorizao de 24 horas, voc poder ter um gargalo de CPU. Se nesses perodos, picos ocorrem s algumas vezes durante o perodo de 24 horas, o problema no provavelmente srio. De qualquer maneira, se eles ocorrerem freqentemente (digamos, mais do que uma vez por hora), voc poder ter de reduzir a carga do servidor ou verificar o desempenho da consulta que porventura esteja gerando esse problema.

System: Processor Queue Length

Este contador indica o nmero de threads aguardando para execuo no processador. Voc deve monitorar este contador alm do contador Processor: % Processor Time. Se ele excede 2 por CPU durante perodos contnuos de 10 minutos ou mais durante um perodo de monitorizao de 24 horas, voc poder ter um gargalo de CPU. Por exemplo, se voc possui 4 CPUs no seu servidor, o valor deste contador no deve ultrapassar a 8 para todo o servidor. Se este valor ultrapassado por um perodo muito extenso e constante, pode indicar que seus processadores no esto mais suportando a carga do sistema. Importante: Uma coisa que pode afetar este contador se voc aumentar o Max Worked Treads do SQL Server, por isso cautela em realiza esta mudana.

Avaliao de Uso de Rede

Voc pode avaliar o uso de rede monitorando os contadores de desempenho para as interfaces de rede. Esses contadores medem as taxas nas quais os bytes e os pacotes so enviados e recebidos numa conexo TCP/IP. A primeira instncia de um objeto da interface de rede representa loopback, que um caminho local atravs do driver do protocolo e do adaptador de rede. Tipicamente, nenhum valor mximo e mnimo absoluto existe para os contadores de interface de rede com a exceo do contador Output Queue Length, que deve sempre ser igual a zero. Se o valor de Output Queue Length exceder a zero, geralmente retorna para zero rapidamente. Caso ocorra um valor que maior que zero pode indicar atrasos na rede. Os atuais adaptadores de rede de alta velocidade e de conexes de rede locais (LAN) pode tratar confortavelmente nveis de trfego que prejudicariam

101

hardware mais antigo. Voc precisa descobrir se o trfego que a sua rede trata est aumentando dentro de algum tempo ou aumentou repentinamente e inesperadamente. No ltimo caso, a sua rede pode est passando por um ataque externo, e voc poderia configurar um alerta para descobrir esta possibilidade de vulnerabilidade. O nvel do trfego que provoca tal alerta depende inteiramente do tipo de trfego na sua rede. Os contadores que voc tipicamente pode usar para monitorar o trfego de rede so: Network Interface: Bytes Received/sec Network Interface: Bytes Sent/sec Network Interface: Bytes/sec Network Interface: Output Queue Length

Network Interface: Bytes Received/sec Este contador mostra a taxa na qual os bytes so recebidos em um adaptador de rede. Um sbito e inesperado aumento neste valor pode indicar que a sua rede est passando por um ataque externo.

Network Interface: Bytes/sec Este contador mostra a taxa no qual os bytes so enviados em um adaptador de rede. Um sbito e inesperado aumento neste valor em um servidor SQL Server 2005 pode indicar que um grande volume de informaes esto sendo acessadas. Se porventura este volume de informaes esperado em virtude de alguma demanda das aplicaes atravs das consultas, sugerimos que faa uma anlise para melhorar o desempenho das mesmas, caso no seja esta a situao ou voc no tiver como explicar tal cenrio, recomendamos que voc faa uma investigao.

Network Interface: Bytes/sec Este contador indica o nvel total do trfego de rede de um servidor para outro. O aumento sbito no valor deste contador pode indicar um ataque na sua rede, por exemplo, um ataque com tentativas de negao de servio (DoS). Um aumento no valor mdio deste contador dentro de algum tempo pode indicar que o seu recurso de rede est passando por stress.

Cenrio: Se o website de sua empresa utiliza um servidor SQL Server 2005, voc pode realizar configuraes de alertas para que um aumento sbito na interface de rede sob o contador Network Interface: Bytes/sec no servidor envie a voc um aviso e dispare triggers que possibilitem fazer a captura pela ferramenta Network Monitor. O Network Monitor um analisador de protocolos de rede. Ele permite a voc capturar, visualizar e analisar o trfego de rede.

Network Interface: Output Queue Length

102

Este contador de desempenho indica o tamanho da fila de pacotes de sada. Na sua anlise voc encontra valores que so maiores que 2, isso pode indicar que h atrasos, ou seja, um gargalo de rede que deve ser encontrado e eliminado. Nas modernas placas de interface de rede, as solicitaes so enfileiradas pelo Network Driver Interface Specification (NDIS). Como resultado, o valor Output Queue Length geralmente sempre em 0. No entanto, em um computador multiprocessamento simtrico (SMP), o valor pode ser muito maior que 2. Avaliao de Conexes de Usurio

O nmero de conexes de usurio afeta o desempenho do servidor SQL Server 2005. Voc pode diagnosticar problemas de desempenho, utilizando e monitorando o seguinte contador: SQL Server: General Statistics: User Connections

Servidor de SQL: General Statistics: User Connections Este contador indica o nmero de conexes de usurio, no o nmero de usurios conectados ao SQL Server. Caso o valor deste contador exceda 255 por um perodo contnuo de 10 minutos ou mais durante um perodo de monitorizao de 24 horas, voc poder ter um gargalo e deve empreender uma ao corretiva para isso. Sugerimos neste caso que seja configurado o Maximum Worker Threads que deve ficar mais alto do que o nmero mximo de conexes de usurios em seu servidor.

Atravs dos contadores mostrados nesta srie que no significa de modo algum uma lista completa dos objetos voc dever monitor, mas um auxlio como ponto de partida para resoluo de problemas de desempenho em seu servidor SQL Server. Reserve algum tempo para torna-se familiar com o Performance Monitor. Recomendamos cautela at que voc est habituado a entender e interpretar as informaes mostradas pelos contadores. No incio comece com alguns contadores e v acrescentando de acordo com a sua necessidade de anlise. O Performance Monitor uma importante ferramenta e voc no deve deix-la de us-la na verificao de problemas. Vale a perna gasta tempo para tirar o melhor proveito desta ferramenta. Sugerimos leitura adicional em material oficial da Microsoft sobre o Performance Monitor

Voc costuma analisar a performance de suas queries antes de coloc-la em produo? Infelizmente, em meu dia-a-dia de trabalho tenho percebido que a resposta para esta pergunta NO. Muitos problemas de performance acontece porque o desenvolvedor simplesmente no tem o hbito de analisar a performace das queries e como consequncia temos queries utilizando ndices de forma incorreta, queries que no utilizam os ndices existentes na tabela e por incrvel que parea, at grandes tabelas sem ndice algum.

103

Por outro lado, muitos desenvolvedores e DBA's utilizam ferramentas do Query Analyzer como o ShowPlan grfico, SHOWPLAN_ALL ou SHOWPLAN_TEXT, mas a prxima pergunta : O que devemos procurar quando examinamos o resultado do plano de execuo de uma query? Neste artigo descreverei algums pontos importantes nos quais voc deve estar atento na hora de analisar o plano de execuo de uma query. Para isto, estarei utilizando o Showplan grfico do Query Analyzer. Sendo assim, para aqueles que no conhecem o SHOWPLAN, recomendo a leitura dos tpicos "SET SHOWPLAN_ALL", "SET SHOWPLAN_TEXT" e "Graphically Displaying the Execution Plan Using SQL Query Analyzer" no Books Online. Em resumo, para ver o plano de execuo de uma consulta no Query Analyzer, basta escrever a query e teclar Ctrl+L ou clicar no boto Display Estimated Execution Plan na barra de ferramentas do Query Analyzer. importante observar que, uma vez que os problemas de performance podem ter vrias razes e consequentemente vrias solues, os pontos destacados aqui so pontos bsicos que voc deve analisar e na medida do possvel evitar que aconteam. Primeiro Ponto: Operaes com alto percentual de consumo Em uma query simples, inicie procurando por operaes que geram um alto percentual de consumo. Procurar por operaes de alto consumo permitir que voc priorize qual problema dever ser atacado primeiro.

Se voc esta analisando uma query com multiplos statements, ser gerado um plano de execuo separado para cada statement. Para cada plano de execuo ser mostrado a ordem de execuo da query, por exemplo: Query 1, Query 2 e seu respectivo custo. Neste caso, procure pelas queries com maior custo.

104

Lembre-se : O plano de execuo sempre deve ser lido da direita para a esquerda e de cima para baixo !!

Segundo ponto: Table Scan, Index Scans e Clustered Index Scans

Table Scans, Index Scans e Clustered Index Scans so operaes que navegam por todas as linhas da tabela ou do ndice e retornam as linhas que satisfazem a clusula WHERE (assumindo que voc use uma clusula WHERE). Um Table Scan obtm linhas de uma tabela no indexada, conhecida tambm como heap table. Um Index Scan procura por linhas no ndice no cluster, enquanto que um clustered index scan procura por linhas no ndice cluster de uma tabela. importante destacar que os Scans nem sempre so ruins, principalmente quando em tabelas com um pequeno nmero de registros ou consultas que devem retornar todos os registros de uma tabela. Scans podem ser ruins se sua consulta roda por um perodo muito longo vindo a prejudicar inclusive outras conexes, causando o que chamamos de blocks. Os Scans so em sua maioria resolvidos atravs da criao de ndices apropriados. Algumas solues incluem alterar suas consultas de forma a ser mais seletiva, ou seja, usar a clusula WHERE para filtrar ao mximo possvel os registros retornados, adicionar/remover e modificar ndices, remover hints, alterar o desing da tabela e usar a ferramenta Index Tuning Wizard para lhe auxiliar na criao de possveis ndices. Terceiro ponto: Warnings

105

Warings ou alertas normalmente so vistos quando no existem estatsticas para colunas de uma tabela e essas colunas so utilizadas como filtros de pesquisa nas queries. Eles podem ser solucionados atravs da criao de estatsticas para a coluna afetada (CREATE STATISTICS) ou ainda, criao de ndices e adio de clusulas JOIN.

Quarto ponto: Seta muito grossa

As setas no so operadores, elas simplesmente so usadas para ligar um operador a outro. Atravs das setas podemos ter uma estimativa da quantidade de linhas afetadas por uma query, isto porque, quanto maior a expessura da seta, maior a quantidade de linhas envolvidas na operao. Ou se preferir, a quantidade de linhas passada de um operador para outro. Para que voc possa ver a estimativa de quantidade e tamanho das linhas afetadas, basta posicionar o cursor sobre a seta. Neste senrio, sempre d uma ateno especial s setas mais grossas, pois uma linha muito grossa pode indicar uma alta operao de I/O. Para solucionar este tipo de problema voc deve tentar fazer com que as setas fiquem o mais fina possvel e aqui novamente entra a clusula WHERE. Por outro lado, evite obter mais linhas que o necessrio. Quinto Ponto: Bookmark Lookups

O operador Bookmark Lookup ocorre em conjunto com um nonclustered index seek quando a consulta deve obter colunas que no esto disponveis dentro do nonclustered index. Neste senrio, procure por Bookmark Lookup que possua um alto percentual de consumo.

106

Se o custo da operao de Bookmark Lookup for muito alto, verifique se um ndice cluster ou um ndice no cluster composto pelas devidas colunas (covering index) pode ser utilizado. Sexto Ponto: Sorting

Um operador SORT ordena todas as linhas de entrada em uma ordem ascendente ou descendente. Isto depende da clusula ORDER BY de sua consulta. Operadores Sort normalmente acrescentam uma grande taxa de I/O s operaes, primariamente utilizando o TEMPDB para suas operao. Se voc costuma ver o operador SORT com muita frequncia em suas consultas e este operador possui um alto consumo de operao, considere por remover a clusula ORDER BY. Por outro lado, se voc sabe que sempre ordenar sua consulta por uma coluna em especfico, considere index-la. Lembre-se que no comando CREATE INDEX voc pode fixar a direo de ordenao (ASC ou DESC) para um ndice em particular. Nota: O Profiler uma excelente ferramena para ajudar na identificao de queries muito pesadas ou que possuem um alto tempo de execuo

Enviando e-mails com o SQL Server 2005


Pr-requisitos Necessrios Antes de usar o Database Mail no SQL Server, alguns itens devem ser observados: Recurso Database Mail ativado: Por padro, o SQL Server traz esta funcionalidade desativada. Para ativ-la, abra o Surface Area Configuration e escolha o link Features (Recursos). Na janela que se abre, escolha a opo Database Mail. Uma vez selecionada, basta marcar a caixa para ativar este recurso (Figura 1). Tambm possvel a ativao do recurso atravs do assistente de configurao (Database Mail Configuration Wizard) ou via sp_configure.

107

Figura 1. Ativando o recursos Database Mail no SQL Server Surface Area Configuration. Service Broker ativado: Por padro, o Service Broker vem ativado no msdb, banco do sistema responsvel pelo servio. O Database Mail usa o Service Broker para enviar as mensagens. Database Mail precisa de acesso ao servidor SMTP: Se o servidor SMTP pede autenticao, o executvel acessa o servidor SMTP usando as credenciais da conta de servio do SQL Server por padro. preciso que o servio SQL Server possa acessar o servidor SMTP.

Aps verificar todos os itens acima, o SQL Server est pronto para utilizar o Database Mail Configurando o Database Mail Antes de configurar o Database Mail, necessrio conhecer os dois componentes que so configurados neste recurso: Account e Profile. Database Mail Account: Uma Account (Conta) possui todos os dados do servidor SMTP e do e-mail a ser utilizado pelo SQL Server 2005 no envio de mensagens. Cada e-mail disponvel para este recurso uma Account no Database Mail. Database Mail Profile: um conjunto de Accounts, agrupadas de acordo com as necessidades definidas pelo DBA. A grande vantagem de utilizar Profiles a possibilidade de possuir uma lista com contas de diferentes servidores SMTP: caso o envio atravs de uma conta falhe, o SQL usa a

108

prxima conta para efetuar a operao. Alm disso, alteraes nas contas no alteram a aplicao que utiliza o Database Mail, j que este chama o Profile, no a Account. Tudo isso transparente para o usurio. Em relao a segurana, existem dois tipos de Profiles: Privado e Pblico. Quando criado um Profile Privado, o Database Mail armazena uma lista de usurios que podem usar este Profile. J quando um Profile Pblico, sua utilizao permitida aos usurios do cargo DatabaseMailUserRole no banco msdb. O SQL Server 2005 oferece duas formas de configurar os componentes do Database Mail: usando o Database Mail Configuration Wizard do SQL Server Management Studio ou usando o conjunto de Stored Procedures msdb.dbo.sysmail. Configurando o Database Mail via Assistente Para acessar o assistente de configurao do Database Mail, abra o Management Studio e expanda a pasta Management na caixa Object Explorer. Ao expandir, clique com o boto direito na opo Database Mail e escolha o item Configure Database Mail: o assistente ento carregado, como mostra a Figura 1.

Figura 1. Janela de Boas Vindas do Database Mail Configuration Wizard.

109

Aps aberta, possvel marcar a opo Skip this page in the future caso no queira que esta tela de boas vindas seja exibida novamente. Clicando em Next apresentada ento a janela de escolha de tarefa, onde o DBA escolhe que ao que deseja efetuar (Figura 2). As opes disponveis so: Set up Database Mail: Nesta opo, o DBA cria um Profile e as contas SMTP associadas a este Profile. Alm disso, o DBA configura a segurana e parmetros do sistema. Manage Database Mail accounts and profiles: Atravs desta opo, o DBA efetua alteraes nas contas e profiles j criados. Manage profiles security: Neste item, o administrador configura a segurana do Profile (Pblico ou Privado). View or change system parameters: Esta opo destinada para configurar os parmetros do Database Mail, como por exemplo a quantidade de tentativas que o SQL Server efetuar cada vez que for solicitado o envio de um e-mail.

Figura 2. Janela de Escolha de Tarefa.

110

Para a criao de um novo Profile e das contas, basta selecionar a primeira opo e clicar no boto Next. O assistente exibe ento a janela de criao de um novo Profile, onde o administrador define um nome, uma breve descrio e gerencia as contas de e-mail (Accounts). Observe a Figura 3.

Figura 3. Janela de criao de um Profile. A principal caracterstica desta janela a caixa SMTP accounts, onde o DBA define e gerencia as contas de e-mail que faro parte do novo Profile. O administrador pode adiciona e remove contas, alm de alterar a ordem com que essas contas so usadas. Para adicionar uma nova conta de e-mail ao novo Profile, basta clicar no boto Add... e a caixa de configurao de uma nova Account ento aberta, como mostra a Figura 4:

111

Figura 4. Janela de criao de uma Account. Os dados pedidos por este cadastro so: Account Name: Nesta caixa definido o nome para a nova conta. Description: Uma breve descrio da nova conta. E-mail address: Preencha com o e-mail a ser utilizado para o envio da mensagem. Display Name: Nome de exibio, que aparecer para os usurios que receberem os e-mails enviados pelo SQL Server. Reply e-mail: Caso deseje, o administrador pode utilizar esta opo para definir um e-mail de resposta, diferente do utilizado para enviar os e-mails do SQL. Muito utilizado quando a conta de envio uma conta no gerenciada por nenhum usurio. Server name & Port number: Nesta opo do DBA define o endereo do servidor e a porta SMTP para o envio das mensagens. This server requires a secure connection (SSL): Caso esta opo esteja marcada, o SQL Server estabelecer uma conexo segura para o envio das mensagens.

112

SMTP Authentication: Nesta parte, o administrador define como ser efetuada a autenticao com o servidor SMTP. So trs as opes disponveis: o Windows Authentication using Database Engine service credentials: Caso esta opo esteja selecionada, a validao no servidor SMTP feita usando os dados do usurio ligado ao servio Database Engine (definidos durante a instalao e gerenciado pelo SQL Server Configuration Manager). Ideal em ambientes Windows com Active Directory configurado. o Basic Authentication: A autenticao bsica se resume a fornecer o usurio e a senha de acesso ao servidor SMTP. Esta opo muito utilizada quando o servidor SMTP est em ambientes hbridos (MAC, Unix, etc.) ou quando o servidor est na web. o Anonymous Authentication: Esta opo faz a validao utilizando o usurio annimo. Servidores SMTP que aceitam este tipo de autenticao permitem o envio de e-mail sem que o usurio tenha que efetuar a validao. Esta opo no recomendada.

Uma vez preenchido todos os dados da nova conta, clique no boto OK e a nova conta estar criada e j listada na caixa SMTP Accounts da janela do Profile. Uma vez criada, voc pode remover uma conta selecionando-a na lista e clicando no boto Remove. Caso existam mais contas cadastradas no mesmo Profile, voc pode definir a prioridade de utilizao pelo SQL Server atravs dos botes Move Up e Move Down: prioridade 1 quer dizer que a primeira conta a ser utilizada pelo SQL Server (Figura 5).

113

Figura 5. Profile com duas contas de e-mail. Depois de configuradas as contas que faro parte do novo Profile, o prximo passo definir qual vai ser a segurana deste novo objeto. Clicando em Next, o assistente apresenta a janela Manage Profile Security, onde o DBA define se a segurana vai ser Privada (Private) ou Pblica (Public). Observe a Figura 6.

114

Figura 6. Segurana do novo Profile. Caso o novo Profile seja pblico, marque a caixa de seleo ao lado do nome na aba Public Profiles. Na em casos onde o Profile ser privado, altere para a aba Private Profiles, escolha o usurio que ter acesso ao Profile e marque a caixa de seleo ao lado do nome. Nesta mesma janela, voc ainda pode definir qual Profile ser o padro (Default Profile). Ao definir um padro, os usurios podem enviar e-mails sem especificar que Profile o SQL Server ir utilizar. Para isto, basta alterar o valor de No para Yes na caixa Default Profile do item desejado. Clicando em Next, mostrado o ultimo passo: definir os parmetros do sistema usados pelo Database Mail. Estes parmetros so utilizados pelo SQL Server quando o servio disparado (Figura 7).

115

Figura 7. Janela de Parmetros do Sistema. Os parmetros do sistema que podem ser configurados so: Account Retry Attempts: Neste parmetro, o administrador define quantas tentativas o SQL Server ir efetuar para enviar um e-mail. Este nmero de tentativas por conta de e-mail. Account Retry Delay (seconds): Intervalo, em segundos, entre as tentativas de envio de um e-mail. Maximum File Size (Bytes): Caso o e-mail enviado possua anexo, este parmetro define o tamanho mximo dos anexos. Prohibited Attachment File Extensions: Nesta opo, o DBA define quais extenses so proibidas para envio como arquivos anexados dos emails. Para adicionar ou remover extenses, clique no boto e adicione as extenses desejadas, separando-as com vrgula. Database Mail Executable Minimum Lifetime (seconds): Nesta opo definido o tempo de vida mnimo que o processo do Database Mail estar ativo. O processo do Database Mail ficar ativo enquanto tiver e-mails a serem enviados. Esta opo define o tempo de vida quando no h mais nenhuma mensagem a ser enviada.

116

Logging Level: Neste parmetro, o administrador define que informaes sero gravadas no log do Database Mail. So trs opes possveis: o Normal: Grava apenas os erros no arquivo de log. o Extended: Grava mensagens de erros, alertas e informaes. a opo Padro. o Verbose: Grava erros, alertas, mensagens informativas, mensagens de sucesso e mensagens internas adicionais. Esta opo recomendada para solucionar problemas do Database Mail.

Por fim, a janela dos Parmetros do Sistema ainda oferece o boto Reset All, que retorna todos os valores dos parmetros aos seus valores padres, caso o boto seja pressionado. Depois de definido os parmetros, o assistente mostra a tela final, onde so apresentadas as aes que o SQL Server executar no momento que o DBA clicar em Finish. Ao encerrar o assistente, o SQL Server executa todas as aes solicitadas ao longo do assistente e configura assim o Database Mail, deixando-o pronto para utilizao pelo Database Engine. Configurando o Database Mail via Stored Procedure Os passos para configurar o Database Mail utilizando Stored Procedures so semelhantes ao assistente apresentado acima. Na Listagem 1 esto todos os procedimentos para a criao de um Profile. Vale lembrar que estas SPs devem ser realizadas no banco MSDB, responsvel pelo Database Mail. Listagem 1. Script para a criao de um Profile e Accounts no Database Mail. --Setando o MSDB como banco a ser utilizado USE msdb; --Criando uma Account (conta) para ser utilizado em um Profile EXECUTE sysmail_add_account_sp @account_name = 'Nome da Conta', @description = 'Descrio da Conta', @email_address = 'sql@microsoft.com', @display_name = 'Nome de Exibio', @mailserver_name = 'smtp.microsoft.com' --Criando o Profile EXECUTE sysmail_add_profile_sp @profile_name = 'Nome do Profile', @description = 'Descrio do Profile' --Criando o Profile, associamos a conta AdventureWorks Mail a este Profile EXECUTE sysmail_add_profileaccount_sp @profile_name = 'Nome do Profile', @account_name = 'Nome da Conta', @sequence_number = 1 --Este nmero a prioridade da Conta no Profile --Dando acesso do Profile ao MSDB, usando o tipo de Profile public EXECUTE sysmail_add_principalprofile_sp @profile_name = 'Nome do Profile', @principal_name = 'public', --Caso seja privado, usar private @is_default = 1; --Valor 1 = true; Valor 0 = false; Define se o Padro

117

Interessante notar que criamos primeiro as Accounts e os Profiles como objetos independentes, para depois associ-los atravs da Stored Procedure sysmail_add_profileaccount_sp. Enviando e-mails com o Database Mail Uma vez os Profiles estando configurados, possvel agora enviar e-mails a partir do SQL Server. Para esta tarefa, o SQL Server oferece a Stored Procedure sp_send_dbmail. Sua sintaxe bem simples, como mostra o exemplo da Listagem 2. Listagem 2. Script para o envio de uma mensagem simples. --Setando o MSDB como banco a ser utilizado USE msdb; --Enviando um e-mail simples EXEC sp_send_dbmail @profile_name = 'Nome do Profile', @recipients = 'email_do_destinatario@sql.com', @body = 'Mensagem do e-mail, no formato texto. possvel o formato HTML.' @subject = 'Assunto do e-mail' No exemplo acima, o SQL Server utiliza o Profile Nome do Profile para enviar uma mensagem simples para o e-mail email_do_destinatario@sql.com. Alm de textos simples, uma das mais importantes utilizaes do Database Mail o envio de resultados de consulta por e-mail. Para tanto, basta adicionar o atributo @query com a consulta desejada. Observe a Listagem 3, onde os dados da tabela Contacts do banco AdventureWorks sero enviados por e-mail. Listagem 3. Script para o envio do resultado de uma query --Setando o MSDB como banco a ser utilizado USE msdb; --Enviando um e-mail com o resultado de uma SELECT EXECUTE sp_send_dbmail @profile_name = 'Nome do Profile', @recipients = 'email_do_destinatario@sql.com', @query = 'SELECT ContactID, FirstName, LastName FROM AdventureWorks.Person.Contact WHERE ContactID < 50', @subject = 'Dados da Tabela de Contatos', @attach_query_result_as_file = 0 No exemplo acima, observe duas diferenas do exemplo da Listagem 2: o atributo @query com a SELECT desejada; e a opo @attach_query_result_as_file. Esta opo define se o resultado da query vai no corpo do e-mail (Valor 0 False) ou como anexo (Valor 1 True). Uma vez executado o comando, o SQL Server retorna a mensagem Mail queued, confirmando o envio da mensagem para o a lista de e-mails a serem processados pelo Database Mail. Atravs do log do Database Mail, possvel verificar se ocorreu algum erro no envio do e-mail. Para acessar o log do Database Mail, abra o Management Studio e expanda a pasta Management na caixa Object Explorer. Ao expandir, clique com o boto direito na opo Database Mail e escolha o item View Database Mail Log: o log ento carregado. Caso tenha dado tudo certo, o destinatrio receber o e-mail com o resultado da consulta, como mostra a Figura 8.

118

Figura 8. Mensagem recebida com o resultado da consulta.

Introduo ao SQL Server Replication


A ferramenta de replicao do SQL Server permite que a estrutura e os dados de uma determinada base sejam disseminados para outros meios, tais como outros servidores ou dispositivos mveis rodando SQL Server Compact Edition. Existem diversos cenrios onde a replicao a melhor e mais simples soluo para algum problema especfico, entre estes cenrios citamos dois casos distintos: Processamento Offline: Se voc deseja manipular dados em uma mquina ou dispositivo mvel no conectado, a replicao pode ser utilizada para que o sincronismo seja feito apenas em momentos onde h conectividade. Redundncia: A ferramenta de replicao permite que voc construa uma base "espelhada" da base de sua aplicao, o que permite que em algum momento de indisponibilidade ela tome o lugar da base de "produo" sem maiores dificuldades. Em qualquer cenrio de replicao existem dois principais componentes, os Editores(

119

Publishers) e ao Assinantes (Subscribers). Os Editores disponibilizam seus dados para outros servidores atravs de Artigos (Articles), um artigo um objeto em uma base de dados, como por exemplo, VIEWS, TABELAS, e etc. Os Assinantes consomem os dados dos editores, eles que recebem as atualizaes quando h alguma modificao na base Editora. Lembrando que nada impede que uma base de dados seja Assinante e Editora ao mesmo tempo, na verdade isso frequentemente utilizado. Esse processo de "meio de campo" entre Editores e Assinantes feito pelos Agentes(Agents). O SQL Server suporta trs diferentes tipos de replicao, Snapshot, Transactional e Merge Replication.O objetivo deste artigo dar uma breve explicao sobre cada um deles para que voc possa escolher qual tipo mais adequado sua realidade. Snapshot Replication: Como o prprio nome j sugere, ele simplesmente tira uma "foto" da base de dados replicada e compartilha essa "foto" com os seus Assinantes, em um processo longo e que consome muitos recursos do servidor, afinal uma cpia completa de todos os artigos da Publicao, por esse motivo esse tipo de replicao no utilizado em uma base de dados que sofre freqentes alteraes. Transactional Replication: A replicao transacional bem mais flexvel do que a Snapshot, quando se trata de uma base de dados que sofre constantes alteraes, nesse tipo de replicao o seu Agente monitora a base Editora esperando por alteraes e transmite somente essas alteraes para os assinantes, de maneira muito mais otimizada e rpida do que a anterior. Merge Replication: Permite que o Assinante e o Editor efetuem alteraes independentes na base de dados, ambas as entidades podem trabalhar desconectadas. No momento do sincronismo (com as bases conectadas obviamente) o Agente de Mesclagem(Merge Agent) checa as alteraes feitas na Publicao e em cada um dos Assinantes e mescla as alteraes de maneira que os dados fiquem solidificados.Entretanto neste processo de mesclagem podem ocorrer conflitos por diversos motivos, esses conflitos podem ser solucionados facilmente com um algoritmo de resoluo de conflitos que determina os dados apropriados a serem mantidos na base.Este tipo de replicao utilizado frequentemente utilizados em bases de dados SQL Server Compact Edition para dispositivos mveis os quais no esto constantemente conectados ao Editor. Verses do SQL Server e suas limitaes Se voc trabalha com o SQL Server 2005, voc deve ficar atento a qual edio se adapta ao tipo de replicao que voc necessita, porque em algumas verses h algumas limitaes desta ferramenta como podemos ver a seguir. Express Edition: Serve apenas como Assinante, no podendo Publicar nada. WorkGroup Edition: limitado, pode servir para apenas 5 Assinantes com Transactional Replication e at 25 Assinantes com Merge Replication.

120

Standard Edition: Possui todas as funcionalidades de replicao ativadas. Enterprise Edition: a ferramente mais poderosa, capaz de interagir fazendo replicao de dados tanto com SQL Server quanto com Oracle Criando uma nova Publicao Primeiramente iremos criar uma base de dados chamada MERCADO, e inserir duas tabelas com um relacionamento simples entre elas nesta base de dados: uma tabela de PRODUTOS e uma outra de CATEGORIAS de Produtos, podemos ver suas respectivas estruturas nas figuras 1 e 2.

Figura 1

Figura 2 O segundo passo popular estas duas tabelas para que em um primeiro sincronismo com o Subscriber alm da estrutura ser criada, j haja uma carga de dados inicial, as tabelas foram populadas manualmente conforme as figuras 3 e 4.

121

Figura 3

Figura 4 Agora sim, estando criada a nossa base de dados, iremos iniciar o processo de publicao desta base. Para isso devemos clicar com o boto direito do mouse em Local Publications dentro da pasta Replication no Object Explorer, como podemos ver na figura 5.

122

Figura 5

Se esta for a primeira vez que fizemos uma publicao no nosso servidor SQL ele ir mostrar as telas representadas nas figuras 6, 7 e 8. Estas telas somente aparecero na primeira vez que uma publicao for feita em nosso servidor. Na figura 6, iremos decidir se este servidor o qual estamos fazendo a publicao vai ser o seu prprio distribuidor ou se vai utilizar um servidor adicional (j configurado para ser distribuidor) para distribuir suas replicaes.

123

Figura 6 Aps, teremos que escolher o local onde ficaro os Snapshots gerados pela nossa publicao, necessrio que seja em um diretrio publicado no IIS para que se possa obter acesso via rede interna ou at mesmo pela internet. (Figura 7)

124

Figura 7 A ltima tela de configurao da distribuio serve para que se possa escolher se o SQL Server Agent inicia automaticamente quando o computador for iniciado ou se voc deseja inici-lo manualmente, observando que para que o Agent seja iniciado automaticamente, o usurio SQL Server Service deve ter permisses de administrador nesta mquina (Figura 8).

125

Figura 8 Tendo sido feitas as configuraes de distribuio para a nossa replicao, apartir de agora iniciaremos o processo de publicao propriamente dito

Primeiramente devemos escolher a base a qual vai ter seus dados replicados, neste caso a base MERCADO (Figura 9).

126

Figura 9 Na prxima tela (Figura 10) podemos escolher entre todos os tipos de replicao do SQL Server, logo abaixo h uma descrio sucinta sobre o tipo selecionado (para maiores informaes recomendo meu outro artigo Introduo SQL Server Replication). Neste caso escolheremos Merge Replication.

127

Figura 10 Logo aps esta etapa devemos escolher quais tipos de Banco de Dados podem acessar esta publicao (Figura 11).Como o foco do artigo SQL Server Compact Edition, escolheremos somente este, mas poderamos escolher juntamente todos os tipos necessrios sem problema algum.

128

Figura 11 Na prxima tela devemos escolher os artigos (articles) que sero publicados, como s temos duas tabelas na nossa base, e elas tm um relacionamento ento selecionaremos as duas tabelas (Figura 12).

129

Figura 12 A prxima tela uma espcie de aviso, dizendo que sero adicionados aos campos das tabelas existentes uma coluna nova do tipo uniqueidentifier.(Figura 13).

130

Figura 13 Agora, temos a possibilidade de incluir filtros na publicao, para que sejam publicados apenas os registros que queremos. possvel fazer uma publicao dinmica, como por exemplo, queremos que determinados produtos vo somente para a base de dados de um determinado vendedor ento filtramos pelo HOST_NAME que deve ser nico para cada base de dados SQL Server CE, alm disso tambm h a possibilidade de publicar apenas algumas colunas especficas, muito teis em aplicaes Mveis onde o volume de dados deve ser menor, entretanto neste caso no aplicaremos filtros. Depois devemos setar o Snapshot Agent para criar os primeiros Snapshots, neste momento, adicionalmente podemos Schedular horrios para que ele gere novos Snapshots(Figura 14).

131

ltimo passo para a publicao a seleo de um nome, neste caso como a publicao da base MERCADO o nome ser PUB_MERCADO. Ao finalizar esta etapa ser mostrada uma tela demonstrando o Status da publicao (Figura 15).

132

Figura 15 Pronto a est a nossa publicao criada e pronta para receber assinantes(Figura 16).

133

Figura 16 Assinando uma Publicao Existente Depois que a nossa publicao da base MERCADO foi criada com sucesso, iremos criar uma base de dados SQL Server Compact Edition para ser sua assinante. A base de dados SQL Server CE apenas um arquivo com a extenso sdf, apesar dessa extenso no ser obrigatria altamente recomendada. Aqui criamos uma base chamada Mercado_Compact e no setamos nenhuma senha, mas apenas para fins didticos, na prtica extremamente necessria uma senha para dar segurana a sua base(Figura 17).

134

Figura 17 Aps a criao vamos abrir esta base no Microsoft SQL Server Management Studio, para isso selecionamos SQL Server Compact Edition como Server Type e localizamos o nosso arquivo Mercado_Compact.sdf no diretrio em que o criamos(Figura 18).

Figura 18 O prximo passo criar a Assinatura propriamente dita, para isso clicamos com o boto direito na pasta Subscriptions dentro de Replication e escolhemos a opo New Subscription.Note que temos apenas a opo de Subscription, isso ocorre

135

porque a base de dados SQL Server Compact Edition no possui a opo de Publicao(Figura 19).

Figura 19 Agora selecionamos a publicao que queremos fazer a assinatura, neste caso a PUB_MERCADO do servidor Solucoes1(Figura 20).

Figura 20 Depois colocamos um nome na assinatura, aqui colocamos ASS_MERCADO, note que h um campo para se setar o HOST_NAME, para que haja filtragem, como no estamos filtrando campo nenhum aqui desnecessrio preenche-lo.(Figura 21)

136

Figura 21 Depois desta etapa, devemos dizer qual o diretrio virtual onde est a publicao, aqui ser a URL: http://10.10.100.140/replication que corresponde ao D:\Replication setado anteriormente no momento da configurao da distribuio.Selecionamos tambm que iremos nos conectar anonimamente ao Web Server(novamente para fins didticos OK?)(Figura 22).

137

Figura 22 Agora teremos que setar os dados para conexo com a base remota, aqui usaremos o usurio sa e sua respectiva senha (Figura 23).

138

Figura 23 Aps essas pequenas configuraes de acesso, e nos mostrado um breve resumo dos dados de acesso a publicao e so demonstrados dois exemplos de cdigo, um em C# e um em VB.NET para que essas configuraes sejam feitas programaticamente, em uma aplicao Windows Mobile por exemplo (Figura 24).

139

Figura 24 Aps essas configuraes, criao de publicao e de assinatura, basta que sincronize a assinatura, clicando-se com o boto direito sobre ela e Syncronize, pronto pode verificar as tabelas que tudo estar l, dados, estrutura e tudo mais. Agora ao se criar um novo registro nesta base SQL Server CE e mandar que seja feito o sincronismo novamente, como um passe de mgica esse registro estar na base publicada e os novos registros includos na base publicada estaro disponveis na base .sdf. Esta a Merge Replication, tipo de replicao que mescla dados da publicao e dos assinantes.

Log Shipping
Entendendo o Log Shipping O log shipping um recurso que pode (e deve) ser configurado no SQL Server 2005 para realizar cpia peridica de banco de dados entre servidores. Este recurso aplicado em diversos cenrios imaginveis. O mais comum quando existe um servidor de produo, um de teste e um de desenvolvimento. O servidor de produo nunca deve ser utilizado para desenvolver e testar alteraes em seus bancos de dados. Estas alteraes so realizadas no servidor de desenvolvimento e testadas no servidor de testes. Como as modificaes e testes devem sempre estar

140

o mais prximo possvel do real, ento os servidores de desenvolvimento e de testes devem ter suas estruturas e seus dados atualizados de acordo com o servidor de produo. Abaixo temos uma representao do cenrio que exemplificamos.

O processo do log shipping relativamente simples, so alguns passos realizados nos servidores envolvidos no processo que fazem todo o trabalho. Primeiro, feito um backup dos dados do servidor principal, no nosso exemplo, o de produo. Este backup gravado fisicamente em uma pasta compartilhada que acessada por este e outros servidores. Os outros servidores so chamados de secundrios, e no exemplo esto representados pelo servidor de desenvolvimento e de teste. Depois de ser feito o Backup do banco, ele copiado para uma pasta especfica em cada servidor secundrio. Depois de copiado, o backup restaurado. Um servidor de monitoramento pode ser configurado e ele registrar todos os passos do servidor principal e dos secundrios. Se no configurar o monitoramento, cada servidor registra suas prprias aes. Este monitor registra os histricos, status dos backups e restauraes, e pode disparar alerta se alguma operao agendada falhar. O responsvel pela configurao do log shipping pode especificar quando sero feitos os backups, quando sero copiados da pasta compartilhada e quando que sero restaurados nos servidores secundrios. O processo que foi criado no servidor principal responsvel pelo backup do banco, as informaes dos histricos e backups antigos so apagados automaticamente de acordo com a configurao que for feita. Nos servidores secundrios, dois processos so habilitados e configurados. O servio de Cpia e o servio de Restaurao. Ao habilitar estes servios, processos chamados Log Shipping Copy e Log Shipping Restore so iniciados dentro do SQL Server Agent. O servio de Cpia responsvel por acessar a pasta compartilhada, e copiar para uma pasta local do servidor secundrio o arquivo de backup que deve ser replicado. O servio de Restaurao o responsvel por restaurar o arquivo que foi copiado. Ambos processos sero executados quando suas clausulas de configurao forem satisfeitas, isso significa que sero executados de acordo com as configuraes de tempo que aprenderemos mais a frente.

141

Um servio de alerta criado quando um servidor de monitoramento utilizado. Este servio compartilhado para o servidor principal e os secundrios que tenham o log shipping configurado. Qualquer mudana na configurao, ou processo que for executado registrado pelo servio de alerta. Este servio tambm iniciado dentro do SQL Server Agent, com o nome de Log Shipping Alert. Abaixo temos uma ilustrao do nosso cenrio de exemplo, configurado para suportar log shipping.

Algumas informaes importantes referentes ao Log Shipping O Log Shipping um recurso do SQL Server Standard Edition, Workgroup Edition ou Enterprise Edition. O SQL Server deve estar instalado em todos os servidores que fizerem parte do processo. No SQL Server Express Edition no possvel habilitar e configurar este recurso. Os servidores de produo, desenvolvimento e de testes podem ser em um mesmo computador com trs instncias distintas do SQL Server. Isso no recomendado, mas pode ser feito. O servidor de dados onde o arquivo de backup ser compartilhado entre os servidores. O servidor de produo que gravar o arquivo, dever ter permisso de leitura e escrita na pasta, e os servidores secundrios, que copiaro o arquivo de backup, devem possuir permisses de leitura e cpia. O servidor de monitoramento deve ser uma mquina separada do servidor principal e dos secundrios, para caso algum dos servidores fique off-line, o responsvel consiga analisar os Logs registrados

142

pelo monitor, e possa tomar as medidas corretas. Isso uma boa prtica, mas no obrigatrio. Os bancos de dados que participaro do processo de log shipping devem ser criados com modo de Full Recovery ou Bulk-Logged Recovery. Outros modelos de Recovery no conseguem trabalhar com log shipping e mostram uma mensagem de erro ao tentar utilizar. Para utilizar o servidor de monitoramento, ele deve ser configurado na primeira vez que estiver criando o log shipping, depois de salvo o processo sem o servidor de monitoramento, ele no poder ser configurado. Caso queira configurar o servidor de monitoramento em um log shipping existente, o log shipping antigo deve ser removido, e criado um novo com os mesmos recursos que o anterior. A nica diferena ser a configurao do servidor de monitoramento.

Habilitando o Log Shipping A primeira coisa a ser feita para habilitar o log shipping, tanto no banco do servidor principal quanto no banco do servidor secundrio, se conectar aos servidores com usurio que seja SysAdmin do banco que ser configurado. Agora que j estamos conectados no banco, e temos permisses suficientes para fazer o trabalho, vamos colocar a mo na massa. Configurando o Servidor Primrio Vamos at a propriedade do log shipping do banco, para isso, clique com o boto direito do mouse no banco que configuraremos, e v at Properties.

Por padro, o banco AdventureWorks no est com a opo de Recovery como Full Recovery ou Bulk-Logged Recovery. Vamos alterar a opo para Full Recovery. Para

143

isso, v at a sesso de Options no menu da esquerda, e altere a opo de Recovery model para Full.

Ainda na janela de propriedades, no menu da esquerda, selecione a sesso Transaction Log Shipping.

144

O lado direito da tela ser apresentado com as opes que sero utilizadas para a configurao. Por padro, o log shipping no est habilitado. Para habilitar, clique na opo Enable this as a primary database in a log shipping configuration.

145

Aps a opo ficar checada, a sesso do Transaction Log Backups ficar habilitada. Clique no boto Backup Settings... Uma nova janela aberta e, so apresentadas algumas opes para configurao. Na caixa de texto Network path to backup folder, coloque o caminho da pasta compartilhada que foi criada no servidor de dados. Caso o caminho da pasta compartilhada seja no mesmo servidor que o banco est, ento coloque o caminho na caixa de texto If the backup folder is located on the primary server, type a local path to the folder. Se a pasta compartilhada estiver em outro servidor, esta ultima caixa de texto pode permanecer em branco. No caso do nosso exemplo, estou usando o mesmo servidor para armazenar os arquivos de backup. Estou usando o mesmo servidor s para exemplificar o artigo, em um cenrio srio, isso no deve ser utilizado. Para isso, criei uma pasta chamada LogShipping e mapeei esta pasta na unidade X: da mquina. Escolha a quantidade de horas que os arquivos de backup permanecero nesta pasta antes de serem apagados automaticamente, e o tempo de espera at um alerta ser disparado caso nenhum backup acontea no tempo determinado.

146

Uma caixa de texto para colocar o Job Name est com um nome padro, este nome pode ser mudado, no caso do exemplo, vou colocar LogShipping_Backp. Do lado da caixa de texto, tem um boto para configurao de agenda, Schedule..., nele possvel alterar as configuraes de execuo do servio. A primeira caixa de texto da nova janela, onde ficar o nome deste agendamento, uma caixa de opes com o nome de Scheduler Type aparece logo abaixo da caixa que soliciotou o nome. Nesta caixa, mantenha a opo de Recurring selecionada e a opo Enable, que est ao seu lado direito, checada. Estas duas ltimas configuraes que alteramos, permite customizarmos as opes mais completas de agendamento. As outras opes no permitem uma configurao muito detalhada, mas em diversos casos servem exatamente para a necessidade. Mantendo a opo Recurring selecionada, as sesses de Frequency, Daily frequence e Duration permitem alteraes. Na sesso Frequency, existe mais uma caixa de seleo, mas neste caso, para selecionar quando que ocorrero os incios dos processos. No nosso exemplo, deixaremos a caixa de seleo Occurs com a opo Daily selecionada, e a opo Recurs every com o numero 1 escolhido. Na sesso de Daily frequency configuramos quando que sero disparados os servios, baseados na sesso anterior, Frequency. Deixaremos a opo Occurs once at selecionada, e a hora que aparece na caixa em frente deixaremos como 15:00:00. A ltima opo que ser alterada, a sesso de Duration. Nesta sesso configuramos a durao do log shipping, determinando sua data de inicio e caso queira, a data de trmino. Para ilustrar nosso exemplo,

147

configuramos o Start Date configurado para o dia 28/03/2007 e a opo No end date desmarcada. Clicamos em OK e fechamos esta janela.

Voltando para a tela anterior, j temos um servio de log shipping configurado no servidor primrio. Agora, devemos configurar os servidores secundrios e o servidor de monitoramento para finalizarmos o processo completo de log shipping proposto para o artigo. Configurando o Servidor Secundrio Ainda na mesma tela do Transaction Log Shipping, em Properties, que j estvamos trabalhando, vamos at a sesso de Secondary databases que ficou habilitada, e clicamos em Add...

148

A nica coisa que se pode fazer neste instante, clicar em Connect... para conectar-se um servidor secundrio. A tela de login convencional do SQL Server Manager Studio apresentada, e solicita para que voc se conecte.

149

Aps a conexo, as opes que estavam desabilitadas, agora permitem alteraes. Na caixa de seleo sobre o Secondary database, escolha o banco que estamos trabalhando. No caso do exemplo, AdventureWorks. Existem trs abas mais abaixo, na primeira delas, Initialize Secondary Database, voc escolhe qual a opo que deve ser utilizada para inicializar o banco. A primeira opo significa que ser gerado um backup completo do primeiro banco e este backup ser restaurado em um segundo banco (ele criar o segundo banco, caso ele ainda no exista). No boto Restore Options... que ficar habilitado, escolhemos a pasta que ter o arquivo de dados (.MDF) e o arquivo de log (.LDF). Na segunda opo, ele somente restaura o backup do primeiro banco no segundo, criando o segundo banco, caso ele no exista. Neste caso, o caminho completo onde est o backup deve ser colocado na caixa de texto Backup File. No boto Restore Options... que habilitado configuramos as mesmas coisas que configuraramos na opo anterior, o arquivo de dados (.MDF) e o arquivo de log (.LDF). A ltima opo significa que o segundo banco j est inicializado no servidor secundrio. Para nosso exemplo, utilizaremos esta ltima opo.

150

Na segunda aba, Copy Files, indicamos o caminho da pasta local do servidor secundrio, onde o servio de cpia guardar as cpias dos arquivos de backup. No caso do exemplo, uma pasta chamada ArquivosCopiados ser utilizada, esta pasta foi criada nica e exclusivamente para esta finalidade. Abaixo da caixa de texto que solicita o caminho da pasta local, existe uma opo que configura a quantidade de tempo que os arquivos copiados permanecero na pasta antes de serem apagados automaticamente. Por padro so 72 horas, manteremos estes valores. Na sesso Copy Job, existe uma caixa de texto para colocar o nome do servio de cpia, no exemplo chamado LogShipping_Copia. Clicando no boto de Schedule... possvel novamente alterar as configuraes de agendamento da execuo. Configuraremos o servio de cpia para rodar todos os dias as 15:30:00, a partir do dia 28/03/2007. Se vocs repararem, esta configurao faz com que o servio de cpia execute sempre 30 minutos depois do servio de backup ter sido iniciado no servidor principal.

151

152

SQL Server 2005 - Log Shipping Entendendo, habilitando e configurando Publicado em: 02/04/2007 Na terceira e ltima aba, Restore Transaction Log, feita a configurao de como ser o processo para restaurar o banco, que foi feito copiado para um endereo local na mquina. Na sesso de Database state when restoring backups, existem duas opes para realizar o processo. Recovery Mode e Standby Mode. No exemplo trabalharemos com o Standby Mode, e marcaremos a caixa Disconnect users in the database when restoring backups. Isso desconectar os usurios que estiverem no banco, enquanto o processo de restaurao do backup for executado. Manter o padro do Delay restoring backups at least com o valor zero e Alert if no restore occurs within como sendo de 45 minutos. Neste bloco de configuraes que acabamos de alterar, a primeira linha aguardar uma quantidade de minutos, para executar o processo de restaurar o backup, depois de ser iniciado o servio que restaura o banco. Por este motivo, mantivemos o valor zero. Enquanto a segunda linha dispara um alerta, depois de passar a quantidade de tempo sem ter executado o processo para restaurao do banco. Como j estamos acostumados, na sesso Restore Job existe a caixa para colocar o nome do servio e o boto para configurar sua agenda de execuo. No nome do servio, colocamos LogShipping_Restaura, e o agendmento para rodar as 16:00:00 de todos os dias, a partir do dia 28/03/2007.

153

154

Aps o termino das configuraes, clique em OK e voltar para a tela de propriedades do banco de dados. Na grid no centro da tela, esto todos os servidores secundrios que foram configurados para trabalharem com log shipping neste banco. No nosso exemplo, trabalhamos somente com um servidor secundrio, mas possvel trabalhar com mais. Para finalizar o artigo, agora s falta configurar o servidor de monitoramento. Para configur-lo, devemos clicar na opo Use a monitor server instance. Ao clicar nesta opo, o boto Settings... habilitado e possvel alterar suas configuraes.

155

Na tela de configurao do servidor de monitoramento, voc deve escolher um servidor para realizar o monitoramento das transaes. Clicando em Connect... voc se conectar a um servidor do SQL Server que ser utilizado como monitor. Depois de conectado, algumas opes j ficam configuradas automaticamente. Na sesso de Monitor connections utilizaremos a opo Using the following SQL Server Login, para manter o usurio e senha que j foi preenchida automaticamente, baseada na conexo que foi realizada. Na sesso de Alert job, como sempre, alteramos o texto do Job Name para algum nome que referencie o servio. Neste caso, LogShipping_Restaura.

156

Depois de configuradas as opes, clique em OK para fechar a tela de configuraes do monitoramento e voltar para a tela inicial de habilitao do log shipping. Repare, que a tela sub-dividida em 3 partes. A primeira para o servidor principal, a segunda para o servidor secundrio e a terceira para o servidor de monitoramento.

157

Ao clicar em OK na tela de habilitao do log shipping, uma caixa aparecer e tentar gravar todas as configuraes feitas para o recurso. Ao trmino da gravao, se todos os status acusarem Success, significa que tudo ocorreu perfeitamente e que seu banco ser replicado para os demais servidores assim que o servio for executado.

Com este recurso, no ser mais necessrio pedir aos responsveis pelo servidor restaurar backups, e vocs trabalharo sem medo de alterar alguma coisa acidentalmente em ambiente de produo. Os bancos podem ser configurados para

158

ser replicado do servidor de produo para o de desenvolvimento, e tambm ser replicado do servidor de desenvolvimento para o de testes. Uma observao que deve ser levada em conta, que quando um backup restaurado em um banco, as informaes que estavam naquele banco so substitudas pelas informaes que esto no arquivo que ser restaurado. Para resolver este problema, as alteraes que forem feitas devem ser gravadas em scripts sql, e executadas depois do processo de restaurao acontecer.

Database mirror
Database Mirroring uma nova feature disponvel no SQL Server 2005 que permite aumentar a disponibilidade de um banco de dados. Na prtica ela permite que voc tenha uma cpia idntica do seu banco de dados de produo em um outro servidor. Neste artigo estarei descrevendo passo-a-passo como configurar o database mirroring no SQL Server 2005. O database mirroring com certeza uma das mais esperadas e teis features disponveis no SQL Server 2005. Ele foi desenvolvido tendo em mente fornecer recursos de alta disponibilidade para os databases das pequenas e mdias empresas. Alguns dos seus principais benefcios so: 1) O failover automtico e realizado em menos de 3 segundos isso significa que se o servidor principal cair, o servidor espelho passar a atender as requisies dos clientes em at 3 segundos. Logicamente que esse tempo est diretamente relacionado s condies da sua rede e do seu hardware. 2) No necessrio hardwares especializados Voc pode configurar o database mirroring utilizando qualquer hardware padro do mercado e tambm no necessrio storage de discos externo. 3) Ele auto monitorvel na sesso de database mirroring existe um parceiro conhecido como witness server, ele responsvel por monitorar o mirror e fornecer o failover automtico no caso de problemas na base de dados principal. 4) A alta disponibilidade realizada no nvel de database. 5) O redirecionamento dos clientes automtico e transparente. 6) No possui um limite de distncia entre os ns que compem o mirror. Bom, claro que o database mirroring tambm possui algumas limitaes como: 1) Suporte a full-text limitado voc pode espelhar um database configurado para full-text da mesma forma que os demais, o problema que aps o incio do mirroring os subseqentes backups de log no contero as possveis alteraes realizadas nos catlogos do full-text. Para mais informaes sobre essa limitao e como resolv-la, consulte o tpico Database Mirroring and Full-Text Catalogs no Books Online do SQL Server 2005. 2) A aplicao precisa ser escrita de forma a dar suporte a database mirroring normalmente uma simples alterao na string de conexo. Para mais informaes consulte o tpico Connecting Clients to a Mirrored Database no Books Online do SQL Server 2005. 3) Enquanto a sesso de database mirroring estiver ativa no permitida a realizao de backup/restore da base espelho.

159

4) Enquanto a sesso de database mirroring estiver ativa, a base espelho no estar disponvel para as aplicaes. Isso porque a base ficar em status de recovering. Falando basicamente, o database mirroring envolve duas cpias de um mesmo banco de dados que reside em diferentes servidores ou instncias do SQL Server 2005. Um ponto importante a ser observado que durante a sesso de database mirroring, apenas uma cpia do banco de dados ficar disponvel para as aplicaes, esta conhecida como principal database. Na prtica, o espelhamento envolve aplicar o log de cada transao (INSERT, UPDATE, DELETE) realizada no principal database na outra cpia do banco de dados, conhecida como mirror database. Embora o processo possa parecer semelhante ao j conhecido Log Shipping, a grande diferena que enquanto o log shipping realiza as atualizaes em bloco de transaes, atravs de um backup/restore do log de transao do database, no database mirroring as transaes so atualizadas de modo instantneo, sem necessitar de um backup/restore do log de transao do database. O principal e o mirror databases devem residir em servidores ou instncias diferentes e trabalham como parceiros em uma sesso conhecida como database mirroring session. O parceiro que armazena o principal database conhecido como principal server e o parceiro que armazenada o mirror database conhecido como mirror server. A configurao mais simples de database mirroring envolve apenas duas instncias do SQL Server o principal e o mirror server. No entanto, caso voc deseje configurar o database mirroring para suportar failover automtico, ento uma terceira instncia ser necessria. Essa instncia conhecida como witness server. A figura abaixo mostra como ficaria uma sesso de database mirroring com dois servidores e uma sesso envolvendo tambm um witness server.

160

Modos de Operao Uma sesso de database mirroring pode ser configurada para operar em trs diferentes modos de operao: High Availability, High Protection ou High Performance. O modo de operao deve ser selecionado de acordo com o nvel de segurana desejado para as transaes (transaction safety) e pode trabalhar em modo de transferncia sncrono ou assncrono. O modo exato depender da configurao do transaction safety e se a sesso possuir ou no um witness server. A tabela abaixo resume as possveis configuraes para o modo de operao: Modo operao Transaction Safety Modo Transferncia Requer Witness

High Availability FULL High Protection FULL High Performance OFF High Availability

Sncrono Sncrono Assncrono

Sim No No

Failover Automtic o ou Manual Manual Forado

Como podemos observar na figura acima, o modo de operao high availability (alta disponibilidade) requer que o transaction safety seja definido como FULL. Este tambm o nico modo que oferece failover automtico e consequentemente requer a presena de um witness server. O propsito do witness server simplesmente monitorar o status da sesso e fornecer a capacidade de failover automtico.

161

Em casos de indisponibilidade do principal server, ocorrer um processo conhecido como role switching. Nesse momento o mirror server assume o papel de principal server e disponibilizar sua base como principal database. Quando o principal server original voltar a ficar disponvel, este assumir o papel de mirror server e seu database se tornar o novo mirror database. O modo high availability opera no modo de transferncia sncrono, isso garante que as transaes sempre sero efetivadas em ambos os parceiros antes de enviar um retorno ao cliente. Quando operando em modo sncrono o principal server dever aguardar uma resposta do mirror server dizendo que a transao foi efetivada com sucesso no mirror database e isso pode fazer com que a performance do principal server seja afetada pela capacidade do mirror server. No geral, esse modo de operao deve ser usado quando se possui um bom link de comunicao entre os parceiros. Voc deve estar se perguntando: Mas o que acontece se eu perder a comunicao entre o principal e o mirror server? Nesse caso, se o principal server estiver se comunicando normalmente com o witness server, ele continuar tratando as requisies dos clientes sem aguardar por um retorno (acknowledgement) do mirror server. Durante esse perodo o principal server armazenar as transaes em uma fila e as enviar ao mirror server assim que o mesmo estiver disponvel. O problema que se o tempo de indisponibilidade do mirror server for muito longo, essa fila pode estourar e alguns dados podem ser perdidos. Por outro lado, se o principal server perder a comunicao tambm com o witness server, ele deixar de responder os clientes. Isso porque ele no ter como confirmar se continua sendo o principal server ou no. High Protection O modo de operao high protection tambm requer que o transaction safety seja definido como FULL. Ele garante que no haver perda de dados, mas como no exige a presena de um witness server, nos casos de indisponibilidade do principal server o failover dever ser executado de forma manual. Em high protection mode, se ocorrer problemas de comunicao entre o principal e mirror server, o principal server deixar de responder os clientes. Isso porque ele no ter como confirmar se continua sendo o principal server ou no. High Performance Esse o mais rpido dos modos de operao, pois trabalha em modo assncrono. Ou seja, a transao efetivada no principal server e um retorno dado ao cliente mesmo sem esperar por uma resposta do mirror server dizendo se a transao foi efetivada com sucesso no mirror database ou no. Ele no requer a presena de um witness server e o nico tipo de failover permitido o "forado". O failover forado faz uma recuperao imediata do mirror database podendo envolver perda de dados nos casos onde o mirror server ainda no tiver recebido o log de transao do principal server.

162

Em high performance mode, se ocorrer problemas de comunicao entre o principal e o mirror server, o principal server continuar tratando as requisies dos clientes e enfileirar as transaes para posterior envio ao mirror server. Pr-requisitos Antes de iniciar a configurao do database mirroring alguns pontos importantes devem ser observados: 1. Certifique-se que os dois ns do mirror (principal e mirror server) estejam com a mesma edio do SQL Server 2005. As edies suportadas so Standard Edition ou Enterprise Edition. 2. Se o failover automtico um requisito para sua soluo de mirroring, voc dever configurar uma terceira mquina ou instncia do SQL Server 2005 como um witness server. O witness pode ser executado em qualquer estao que suporte o SQL Server 2005 Enterprise, Standard, Workgroup ou Express Edition. 3. Certifique-se que existe comunicao entre os servidores ou instncias envolvidas na configurao. 4. Se os servios do SQL Server nos diferentes servidores ou instncias esto sendo iniciados com diferentes contas de usurios de domnio ou ainda, os servidores esto fora de um domnio, ser preciso criar no database master de cada instncia um login para a conta de usurio que inicia o SQL Server das outras instncias. O ideal que ambas as instncias sejam iniciadas com uma mesma conta de usurio de domnio. Para mais informaes, consulte o link How to: Allow Database Mirroring Network Access Using Windows Authentication (Transact-SQL) no Books Online do SQL Server 2005. 5. O principal database deve ter seu recovery model configurado como FULL. 6. O mirror database deve ser iniciado a partir de um restore do principal database com a opo WITH NORECOVERY. 7. O mirror database deve ter o mesmo nome que o principal database. 8. Certifique-se que existe logins no mirror server para todos os usurios utilizados no principal database. Configurando o Database Mirroring Agora que voc j sabe como funciona o database mirroring, vamos ao que realmente interessa, a configurao passo-a-passo. Para este artigo estarei utilizando como exemplo a base de dados Pubs. Em um ambiente de produo, o ideal termos as instncias do SQL Server 2005 instaladas em mquinas diferentes, podendo o witness server ser configurado em qualquer estao com Windows XP SP2 e SQL Server Express Edition. Se voc quiser instalar a instncia do witness server em um dos servidores principais, a sugesto que este seja instalado no servidor que alocar a instncia do mirror server. Nota: importante lembrar que por default a verso RTM do SQL Server 2005 (build 9.0.1399) no oferece suporte ao database mirroring. Isso significa que embora ele possa ser habilitado atravs da ativao do trace flag 1400, oficialmente a Microsoft s oferece suporte a database mirroring a partir do SQL Server 2005 SP1 ou superior. A recomendao que database mirroring no seja configurado em ambientes de produo que no possuam o SQL Server 2005 SP1 ou superior.

163

Para configurar o database mirroring no SQL Server 2005, siga os passos descritos abaixo: 1. Habilitar o trace flag 1400 O trace flag 1400 habilita a criao dos endpoints, os quais so necessrios para configurar e usar o database mirroring. Este trace flag deve ser configurado em verses anteriores ao SQL Server 2005 SP1. Se estiver utilizando o SQL Server 2005 SP1 ou superior, v direto para o item 2. Para habilitar o trace flag 1400, siga os seguintes passos: a) Na guia Registered Servers do SQL Server Management Studio, clique com o boto direito sobre o principal server (servidor que armazena o principal database) e selecione SQL Server Configuration Manager. b) No SQL Server Configuration Manager, clique em SQL Server 2005 Services e selecione a instncia do SQL Server na qual deseja configurar o parmetro. c) Clique com o boto direito sobre a instncia e selecione properties. d) Na caixa de dilogo Propriedades do SQL Server <instancename>, clique na guia advanced e selecione Startup Parameters. e) Na coluna valor, no fim do texto original adicione o parmetro T1400. f) Efetue um stop/start no SQL Server e repita os passos acima para o mirror server (instncia que armazenar o mirror database). Nota: Se voc pretende configurar o database mirroring como high availability (failover automtico), adicione o parmetro T1400 tambm no witness server.

164

2. No Object Explorer, selecione o principal server, expanda databases e clique com o boto direito sobre o database que ser espelhado (principal database). Selecione properties e na pgina Options, altere seu recovery model para Full. Se preferir, execute o script abaixo no Query Editor do SQL Server Management Studio. ALTER DATABASE Pubs SET RECOVERY FULL 3. Faa um backup full e um backup de log do principal database. Se preferir, execute o script abaixo no Query Editor. Nota: O ideal que o principal database fique bloqueado at a concluso da configurao. Isso evitar alteraes no log de transao aps a realizao dos backups. -- Rodar no Principal Server BACKUP DATABASE Pubs TO DISK='C:/Backup/Pubs_BKP.BAK' WITH INIT GO BACKUP LOG Pubs TO DISK='C:/Backup/Pubs_TRL.BAK' WITH INIT Nota: Durante todo este artigo estarei utilizando a barra (/) para a separao do diretrio. 4. Copie os backups para o mirror server e restaure o backup full no mirror server utilizando a opo WITH NORECOVERY. --Rodar no Mirror Server RESTORE DATABASE Pubs FROM DISK='C:/Backup/Pubs_BKP.BAK' WITH NORECOVERY A recomendao que quando possvel o caminho no mirror server seja idntico ao caminho do principal server (incluindo o nome das letras dos discos). Se o caminho for diferente, use a opo MOVE durante o restore informando o caminho onde os arquivos de dados e log devero ser armazenados. --Rodar no Mirror Server RESTORE DATABASE Pubs FROM DISK='C:/Backup/Pubs_BKP.BAK' WITH REPLACE,NORECOVERY, MOVE 'Pubs_Data' TO 'G:/Dados/Pubs_Data.mdf', MOVE 'Pubs_Log' TO 'G:/Dados/Pubs_Log.ldf' Feito isso, o mirror database ficar em status de Restoring, indicando que o database est pronto para receber as transaes do principal database.

165

5. No principal server, expanda Databases e selecione o principal database. Clique com o boto direito do mouse sobre o mesmo e seleciona All TasksMirror....

6. Clique sobre o boto Configure Security.... 7. Na janela Configure Database Mirroring Security Wizard, informe se voc quer configurar a segurana de forma a incluir um witness server e clique em Next.

166

Nota: Lembre-se que para utilizar failover automtico a configurao de um witness server obrigatria. 8. Na janela Choose Server to Configure, selecione os servidores onde as configuraes de segurana devero ser salvas. Se estiver utilizando um witness server, marque as trs opes e clique em Next. 9. Na janela Principal Server Instance, especifique as informaes para o endpoint do principal server. Um endpoint um objeto SQL Server que permite ao SQL Server se comunicar atravs da rede. Quando configurando database mirroring, uma instncia requer seu prprio e dedicado database mirroring endpoint. Ele usado exclusivamente para receber comunicao de database mirroring dos demais parceiros que compem o mirror (o mirror e witness server).

Nota: Se o principal, mirror e witness servers so instncias SQL Server em um mesmo servidor fsico, os endpoints para cada uma das instncias devem utilizar nmero de portas diferentes (exemplo 5022, 5023 e 5024). Se estiver utilizando diferentes servidores para cada uma das instncias, a recomendao utilizar a porta default 5022. Especifique tambm se os dados enviados atravs do endpoint devero ou no ser criptografados. 10. Na janela Mirror Server Instance, selecione o servidor que ser o mirror server. Ao selecionar o servidor ser apresentada a janela Connect to Server, a qual permite configurar uma conexo com o servidor. Se o mirror server e o principal

167

server estiverem no mesmo domnio do Windows, a recomendao que se utilize Windows Authentication, se estiverem em domnios diferentes, utilize SQL Authentication e entre com um login e senha do SQL Server (Por exemplo o login sa).

11. Na janela Witness Server Instance, selecione o servidor que ser o witness server. Esta configurao somente ser necessria se optar por configurar o failover automtico.

168

12. Ao clicar em Finish ser apresentado um sumrio das configuraes. 13. Clique em Finish para concluir o processo de configurao. 14. A janela Configuring Endpoint apresenta o status final da configurao. Se nenhum problema tiver ocorrido, voc dever ter o status de sucesso para a configurao dos endpoints das trs instncias. Clique em close. 15. Ao clicar em Close, a mensagem abaixo ser apresentada indicando que o database mirroring foi configurado com sucesso.

16. D volta janela principal temos algo como a janela abaixo. Clique em Start Mirroring para iniciar a sesso de database mirroring. Nota: Antes de clicar em Start Mirroring a recomendao executar um backup de transao do principal database e restaur-lo no mirror database para sincronizar

169

os dados do log. Caso ao clicar em Start Mirroring seja apresentada a mensagem de erro 1478, restaure o backup de transao realizado no passo 3.

Configurando o Database Mirroring via Transact-SQL Para aqueles que preferem utilizar a linguagem Transact-SQL, tambm possvel configurar o database mirroring utilizando T-SQL. Aps certificar-se de que todos os requisitos foram satisfeitos, incluindo a ativao do trace flag 1400 para a verso do SQL Server 2005 sem o SP1 (build 9.0.1399), siga os passos abaixo para configurar o database mirroring via T-SQL. 1. Na guia Registered Servers do SQL Server Management Studio, clique com o boto direito sobre o principal server (servidor que possui o database a ser espelhado) e selecione Connect|New Query. Altere o recovery model do principal database para FULL.

170

-- Rodar no Principal Server ALTER DATABASE Pubs SET RECOVERY FULL 2. Faa um backup Full e um backup de log do principal database. -- Rodar no Principal Server BACKUP DATABASE Pubs TO DISK='C:/Backup/Pubs_BKP.BAK' WITH INIT GO BACKUP LOG Pubs TO DISK='C:/Backup/Pubs_TRL.BAK' WITH INIT 3. Copie os backups para o mirror server e restaure o backup full no mirror server utilizando a opo WITH NORECOVERY. --Rodar no Mirror Server RESTORE DATABASE Pubs FROM DISK='C:/Backup/Pubs_BKP.BAK' WITH REPLACE,NORECOVERY Se o caminho (incluindo o nome das letras dos discos) no mirror server for diferente do caminho do principal server, utilize a opo MOVE durante o restore. --Rodar no Mirror Server RESTORE DATABASE Pubs FROM DISK='C:/Backup/Pubs_BKP.BAK' WITH REPLACE,NORECOVERY, MOVE 'Pubs_Data' TO 'G:/Dados/Pubs_Data.mdf', MOVE 'Pubs_Log' TO 'G:/Dados/Pubs_Log.ldf' 4. Crie os endpoints no principal server, mirror server e witness server. Lembrando que a criao de um endpoint no witness server somente necessria se pretende configurar o database mirroring como High Availability. -- Rodar no Principal Server IF EXISTS (SELECT name FROM sys.database_mirroring_endpoints WHERE name='endpoint_mirroring') DROP ENDPOINT endpoint_mirroring GO CREATE ENDPOINT endpoint_mirroring STATE = STARTED AS TCP ( LISTENER_PORT = 5022 ) FOR DATABASE_MIRRORING (ROLE=PARTNER); GO --Rodar no Mirror Server IF EXISTS (SELECT name FROM sys.database_mirroring_endpoints WHERE name='endpoint_mirroring') DROP ENDPOINT endpoint_mirroring GO CREATE ENDPOINT endpoint_mirroring STATE = STARTED AS TCP ( LISTENER_PORT = 5022 ) FOR DATABASE_MIRRORING (ROLE=PARTNER); GO

171

--Rodar no Witness Server IF EXISTS (SELECT name FROM sys.database_mirroring_endpoints WHERE name='endpoint_mirroring') DROP ENDPOINT endpoint_mirroring GO CREATE ENDPOINT endpoint_mirroring STATE = STARTED AS TCP ( LISTENER_PORT = 5022 ) FOR DATABASE_MIRRORING (ROLE=WITNESS); GO Depois de preparado o mirror database e criado os endpoints em cada um dos servidores ou instncias do SQL Server 2005, podemos ento iniciar a criao de uma sesso de database morroring. Para iniciar uma sesso de database mirroring, siga os passos descritos abaixo: 1. Certifique-se de que os endpoints foram criados e iniciados com sucesso em cada um dos servidores ou instncias. Para isso, utilize o seguinte T-SQL script. SELECT role_desc, state_desc FROM sys.database_mirroring_endpoints 2. Restaure o backup de log do principal database sobre o mirror database. Esse procedimento necessrio para sincronizar o log de transao do principal database com o do mirror database. -- Rodar no Mirror Server RESTORE LOG Pubs FROM DISK='C:/Backup/Pubs_TRL.BAK' WITH NORECOVERY 3. Configure o principal server como um parceiro do mirror server. Conecte-se ao query editor no mirror server e execute: -- Rodar no Mirror Server USE master GO ALTER DATABASE Pubs SET PARTNER = 'TCP://SERVER01.contoso.com:5022' Neste exemplo, SERVER01 o nome fsico do meu principal server e contoso.com o nome do meu domnio. Se preferir voc pode usar tambm o endereo IP do servidor. 4. Configure o mirror server como um parceiro do principal server, para isso, conecte-se ao query editor no principal server e execute: -- Rodar no Principal Server USE master GO ALTER DATABASE Pubs SET PARTNER = 'TCP://SERVER02.contoso.com:5022'

172

5. Opcionalmente, se configurar um witness server para a sesso de database mirroring, conecte-se ao query editor no principal server e execute o script abaixo: --- Rodar no Principal Server Use master GO ALTER DATABASE Pubs SET WITNESS = 'TCP://VPC.contoso.com:5022' Testando a Funcionalidade do Database Mirroring Concluda a configurao e inicializao da sesso de database mirroring, se tudo deu certo o database mirroring j deve estar funcionando. A figura abaixo mostra o status do principal e mirror database aps a configurao.

Experimente fazer algumas alteraes em seu principal database (por exemplo, criando uma tabela e inserindo registros sobre a mesma) e depois verifique se estas foram espelhadas no mirror database. No entanto, lembre-se que o mirror database no fica disponvel para leitura. Para utilizar o mirror database preciso executar 2 passos: 1. Quebrar o mirroring Para quebrar o mirroring, podemos utilizar a janela de propriedades do principal database e na pgina Mirroring clicar sobre o boto Stop Mirroring, ou ainda executar o script abaixo no query editor de um dos partners da sesso: --Executar no Principal ou Mirror Server --Para desfazer o Mirror ALTER DATABASE Pubs SET PARTNER OFF

173

Caso tenha configurado o mirroring para suportar alta disponibilidade, basta clicar sobre o boto Failover, na janela de propriedades do principal database e o failover ser realizado automaticamente. 2. Remover o status de Restoring do mirror database Aps quebrar o mirroring, o mirror database se manter no status de Restoring. Para utiliz-lo preciso antes deix-lo em seu status normal para utilizao realizando o recovering do database. Para fazer o recovering do mirror database, execute o script abaixo no query editor do mirror server. -- Rodar no Mirror Server RESTORE DATABASE Pubs WITH RECOVERY Pronto, com isso o mirror database estar disponvel para utilizao e dever conter as alteraes realizadas no principal database. Erros mais Comuns Dois erros muito comuns durante a configurao de uma sesso de database mirroring so os erros 1418 e 1478. Msg 1418, Level 16, State 1, Line 1 The server network address "TCP://SERVER02.conto.com:5022" can not be reached or does not exist. Check the network address name and reissue the command. Msg 1478, Level 16, State 0, Line 1 The mirror database, "Pubs", has insufficient transaction log data to preserve the log backup chain of the principal database. This may happen if a log backup from the principal database has not been taken or has not been restored on the mirror database. Ambos os erros costumam ocorrer no mesmo ponto: no momento da configurao dos Partners da sesso (passos 3, 4 ou 5 quando configurando via script, ou ao clicar sobre o boto Start Mirroring quando configurando via tela grfica). O erro 1418 indica problemas de conectividade entre os ns, normalmente problemas de resoluo dos nomes das mquinas. Para corrig-lo, certifique-se de que os nomes das mquinas esto corretos ou ento tente configurar os partners utilizando o endereo IP. ALTER DATABASE Pubs SET PARTNER = 'TCP://192.168.0.12:5022' Nota: Lembre-se tambm de informar o mesmo nmero de porta utilizado na criao do endpoint do respectivo partner. O erro 1478 indica uma falta de sincronismo entre o log de transao do principal e o mirror database. Para corrigi-lo, efetue um backup de transao no principal database e restaure-o no mirror database utilizando a opo WITH NORECOVERY.

174

RESTORE LOG Pubs FROM DISK='C:/Backup/Pubs_TRL.BAK' WITH NORECOVERY Aps a restaurao do bakup de transao, reinicie a configurao dos Partners em ambos os servidores da sesso. Bom pessoal, isso a. Qualquer dvida ou problema na configura do database mirroring, post uma mensagem em nosso frum. Caso desejem saber mais sobre database mirroring, incluindo a parte conceitual sobre seu funcionamento, uma excelente fonte de documentao o Whitepaper Database Mirroring in SQL Server 2005 (http://www.microsoft.com/technet/prodtechnol/sql/2005/dbmirror.mspx) ou ainda o prprio Books Online do SQL Server 2005.

175

Vous aimerez peut-être aussi