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
XDesempenho 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