Falha no backup do SQL Server 2005

3

Eu tenho um banco de dados no modelo de recuperação completa. Os backups de log de transações desse banco de dados (programados por meio de um plano de manutenção) falham todas as noites.

Aqui está a instrução CREATE do banco de dados, etc:

USE [master]
GO
/****** Object:  Database [Gatekeeper]    Script Date: 05/18/2009 15:31:26 ******/
CREATE DATABASE [Gatekeeper] ON  PRIMARY 
( NAME = N'Gatekeeper_dat', FILENAME = N'F:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\Gatekeeper.mdf' , SIZE = 20480KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'Gatekeeper_log', FILENAME = N'E:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\Gatekeeper.ldf' , SIZE = 10240KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
 COLLATE SQL_Latin1_General_CP1_CI_AS
GO
EXEC dbo.sp_dbcmptlevel @dbname=N'Gatekeeper', @new_cmptlevel=90
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [Gatekeeper].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [Gatekeeper] SET ANSI_NULL_DEFAULT OFF 
GO
ALTER DATABASE [Gatekeeper] SET ANSI_NULLS OFF 
GO
ALTER DATABASE [Gatekeeper] SET ANSI_PADDING OFF 
GO
ALTER DATABASE [Gatekeeper] SET ANSI_WARNINGS OFF 
GO
ALTER DATABASE [Gatekeeper] SET ARITHABORT OFF 
GO
ALTER DATABASE [Gatekeeper] SET AUTO_CLOSE OFF 
GO
ALTER DATABASE [Gatekeeper] SET AUTO_CREATE_STATISTICS ON 
GO
ALTER DATABASE [Gatekeeper] SET AUTO_SHRINK OFF 
GO
ALTER DATABASE [Gatekeeper] SET AUTO_UPDATE_STATISTICS ON 
GO
ALTER DATABASE [Gatekeeper] SET CURSOR_CLOSE_ON_COMMIT OFF 
GO
ALTER DATABASE [Gatekeeper] SET CURSOR_DEFAULT  GLOBAL 
GO
ALTER DATABASE [Gatekeeper] SET CONCAT_NULL_YIELDS_NULL OFF 
GO
ALTER DATABASE [Gatekeeper] SET NUMERIC_ROUNDABORT OFF 
GO
ALTER DATABASE [Gatekeeper] SET QUOTED_IDENTIFIER OFF 
GO
ALTER DATABASE [Gatekeeper] SET RECURSIVE_TRIGGERS OFF 
GO
ALTER DATABASE [Gatekeeper] SET  DISABLE_BROKER 
GO
ALTER DATABASE [Gatekeeper] SET AUTO_UPDATE_STATISTICS_ASYNC OFF 
GO
ALTER DATABASE [Gatekeeper] SET DATE_CORRELATION_OPTIMIZATION OFF 
GO
ALTER DATABASE [Gatekeeper] SET TRUSTWORTHY OFF 
GO
ALTER DATABASE [Gatekeeper] SET ALLOW_SNAPSHOT_ISOLATION OFF 
GO
ALTER DATABASE [Gatekeeper] SET PARAMETERIZATION SIMPLE 
GO
ALTER DATABASE [Gatekeeper] SET  READ_WRITE 
GO
ALTER DATABASE [Gatekeeper] SET RECOVERY FULL 
GO
ALTER DATABASE [Gatekeeper] SET  MULTI_USER 
GO
ALTER DATABASE [Gatekeeper] SET PAGE_VERIFY CHECKSUM  
GO
ALTER DATABASE [Gatekeeper] SET DB_CHAINING OFF 

Aqui está a mensagem de erro do plano de manutenção:

Executing the query "BACKUP LOG [Gatekeeper] TO  DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\Gatekeeper\Gatekeeper_backup_200905180100.trn' WITH NOFORMAT, NOINIT,  NAME = N'Gatekeeper_backup_20090518010003', SKIP, REWIND, NOUNLOAD,  STATS = 10
" failed with the following error: "BACKUP LOG cannot be performed because there is no current database backup.
BACKUP LOG is terminating abnormally.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

Este é o código relevante do plano de manutenção:

EXECUTE master.dbo.xp_create_subdir N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\Gatekeeper'
GO
declare @backupSetId as int
select @backupSetId = position from msdb..backupset where database_name=N'Gatekeeper' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'Gatekeeper' )
if @backupSetId is null begin raiserror(N'Verify failed. Backup information for database ''Gatekeeper'' not found.', 16, 1) end
RESTORE VERIFYONLY FROM  DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\Gatekeeper\Gatekeeper_backup_200905190812.trn' WITH  FILE = @backupSetId,  NOUNLOAD,  NOREWIND
GO
    
por andyhky 18.05.2009 / 22:44

6 respostas

4

Você não pode fazer backups de log, a menos que haja um backup completo do banco de dados como sua 'base'. Se você acabou de mudar para o modelo de recuperação FULL, o banco de dados não está realmente lá até que você faça o primeiro backup do banco de dados - ele permanece em um modo pseudo-SIMPLE.

Além disso, se você fizer algo para quebrar a cadeia de backup de log, como o UndertheFold mencionou, será necessário restabelecer a cadeia de backup de log com outro backup completo.

[Editar] Você pode encontrar a hora em que o último backup de banco de dados foi feito de seu banco de dados usando esta consulta:

SELECT [backup_start_date], [backup_end_date] FROM msdb.dbo.backupset WHERE [type] = 'D' AND [database_name] = 'GateKeeper' ORDER BY [backup_start_date] DESC;

ou para listar todos os backups e seus tipos (obtidos desde que as tabelas do histórico de backup foram removidas manualmente):

SELECT [backup_start_date], [backup_end_date], [tipo] FROM msdb.dbo.backupset WHERE [database_name] = 'GateKeeper' ORDER BY [backup_start_date] DESC;

D = backup do banco de dados, L = backup do log, I = backup diferencial do banco de dados.

Mais informações nos Manuais Online para 'backupset'

Espero que isso ajude

    
por 19.05.2009 / 19:27
1

Você deve executar um backup completo antes de fazer o backup do log. link

    
por 18.05.2009 / 22:54
1

Existe mais uma fonte de erros: O envio de logs pode interferir no processo de backup de log se você colocar arquivos para envio de log em outra pasta.

A sequência completa de backups de log a partir do último backup completo do banco de dados deve estar no mesmo local (pasta).

    
por 19.05.2009 / 00:18
0

De acordo com o log que você publicou, não é possível fazer o backup dos logs de transações porque não é feito o backup do próprio banco de dados em si. O banco de dados principal está sendo submetido a backup antes de você tentar fazer backup dos logs de transação?

    
por 18.05.2009 / 22:53
0

Eu postei na sua postagem duplicada, mas o erro no log que você postou indica que o banco de dados não está sendo submetido a backup antes dos logs de transações. O plano de manutenção inclui uma tarefa para fazer backup do próprio banco de dados?

    
por 18.05.2009 / 22:56
0

Isso pode estar relacionado a etapas extras que não são mencionadas aqui, como

  • fazendo backup do log com truncate_only

  • ou você alternou do modo de recuperação FULL ou LOGGED para BULK

por 18.05.2009 / 23:18