• Nenhum resultado encontrado

Restaurando a partir de um Database Snapshot

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á disponível na versão Enterprise Edition do SQL Server 2005, assim como também vimos um exemplo prático de sua

utilização. 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 à restauração de banco de dados a partir de backups, qualquer usuário com permissões 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 exclusão acidental de uma tabela. É

importante salientar que ter um plano regular de backup e testar a restauração 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 alterações feitas no banco de dados desde que o snapshot foi criado, copiando as páginas do snapshot de volta ao banco de dados origem. Apenas as páginas que sofreram modificação são revertidas. A operação também reconstrói o log do banco de dados.

A operação de reverter um banco de dados a partir de seu snapshot não é 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 criação 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 cópia incompleta dos arquivos de um banco de dados.

 Durante a operação de restore, tanto o snapshot como o banco de dados são

marcados como “In Restore” e se tornam indisponível.

 Como a operação de restore automaticamente reconstrói o log do banco de

dados, é recomendado o full backup do banco de dados e do log antes da restauração.

Como reverter um banco de dados com base no snapshot

Vamos ver através de um exemplo prático, 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 instalação do SQL Server 2005. Antes de qualquer coisa, é recomendável 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 então em

94

2. Na caixa de diálogo Connect to Server, informe os valores conforme a tabela

abaixo.

Propriedade Valor

Server Type Database Engine

Server Name Localhost

Authentication Windows Authentication

3. No SQL Management Studio, clique no botão New Query na barra de

ferramentas.

4. Na nova janela de consulta, execute o seguinte código 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

então confirme a existência de um snapshot chamado

AdventureWorks_Snapshot_07102006. Você poderá precisar fazer o refresh da lista de database snapshots para que o novo snapshot esteja visível. Outra forma de listar os snapshots é através da seguinte consulta ao catálogo sys.databases:

SELECT * FROM sys.databases

WHERE source_database_id IS NOT NULL

6. Clique no botão New Query. Na nova janela de consulta, execute o seguinte

código Transact-SQL:

DROP TABLE AdventureWorks.Sales.Individual

7. Clique no botão 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] não 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'

95 PRINT 'Tabela [Sales].[Individual] nao encontrada no snapshot

AdventureWorks_Snapshot_07102006'

8. Clique no botão New Query. Na nova janela de consulta, execute o seguinte

código 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 contém o código SELECT, e então

clique no botão 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

Resolução

de problemas de Banco de

Dados

X

Desempenho do Servidor

Parte I - Avaliando o uso de Memória

Quando um servidor SQL Server 2005 não está funcionando bem, atendendo as exigências de desempenho esperado, estamos numa situação onde pode ser um resultado de várias questões conjugadas, que podem ser: do próprio banco de dados, entre as instâncias do SQL, ou ainda no desempenho dos recursos físicos do servidor. Como em qualquer tipo de servidor, os gargalos podem ocorrer por causa da pressão em um ou vários recursos de servidor como memória, disco rígido, 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 razão do problema.

Iniciaremos uma série de artigos, objetivando cobrir esta demanda de administração de Banco de Dados. Começaremos abordando a resolução de problemas no tocante a desempenho do físico do servidor como CPU, memória dentre outros. Bem como as ferramentas que você pode usar para diagnosticar problemas de servidor. As principais ferramentas que você deve usa para este propósito são as ferramentas de desempenho do Windows Server 2003: System Monitor e Perfomance Logs and Alerts Além destas, você pode usar o SQL Server Profiler para investigar o desempenho geral do servidor. Quando você identificar o recurso físico sob pressão, 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 são escritos no log de eventos do Windows e bem também 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 degradação 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ê faça um diagnóstico quando verificar degradação do desempenho do SQL Server, criando