MSSQLSERVER_3023

Aplica-se a: SQL Server

Details

Attribute Valor
Nome do Produto SQL Server
ID do Evento 3023
Origem do evento MSSQLSERVER
Componente SQLEngine
Nome simbólico DB_IN_USE_DUMP
Texto da mensagem As operações de backup e manipulação de ficheiros (como ALTER DATABASE ADD FILE) numa base de dados devem ser serializadas. Reemita a instrução após a operação atual de backup ou manipulação de ficheiros estar concluída

Explanation

Tenta executar um comando Backup, shrink ou alter database no SQL Server, e depara-se com as seguintes mensagens:

Msg 3023, Nível 16, Estado 2, Linha 1
As operações de backup e manipulação de ficheiros (como ALTER DATABASE ADD FILE) numa base de dados devem ser serializadas. Emita novamente o comando depois de concluída a operação atual de cópia de segurança ou de manipulação de ficheiros.

Msg 3013, Nível 16, Estado 1, Linha 1
BACKUP DATABASE está a terminar de forma anormal.

Além disso, o registo de erros do SQL Server contém mensagens como as seguintes:

<Data> Hora Erro de Backup: 3041, Gravidade: 16, Estado: 1.
<O Datetime> Backup BACKUP falhou em completar o comando BACKUPDATABASE MyDatabase COM DIFFERENTIAL. Verifique o log do aplicativo de backup para obter mensagens detalhadas.

Também poderá notar que estes comandos encontram a wait_type = LCK_M_U e a wait_resource = DATABASE: <id> [BULKOP_BACKUP_DB] quando o estado destes comandos é visualizado a partir das várias vistas dinâmicas de gestão (DMVs), como from sys.dm_exec_requests ou sys.dm_os_waiting_tasks.

Causas possíveis

Existem várias regras sobre quais operações são permitidas ou não quando uma base de dados completa está atualmente em curso contra uma base de dados. Alguns exemplos são os seguintes:

  • Apenas um Backup de dados pode ocorrer de cada vez (quando ocorre um Backup completo da base de dados, Backups diferenciais ou incrementais não podem ocorrer ao mesmo tempo).
  • Só pode ocorrer um backup de um registo de cada vez (é permitido um backup de registo quando está a ocorrer um backup completo da base de dados).
  • Não pode adicionar ou eliminar ficheiros numa base de dados enquanto está a decorrer um Backup.
  • Não podes reduzir ficheiros enquanto estão a acontecer backups da base de dados.
  • Existem alterações limitadas ao modelo de recuperação permitidas enquanto ocorrem backups.

Quando qualquer uma destas operações conflitantes é realizada, os comandos encontram as esperas de bloqueio mencionadas na secção "Explicação", seguidas de receber as mensagens 3023 e 3041.

Ação do usuário

Examine os cronogramas das várias atividades de manutenção da base de dados e, em seguida, ajuste os cronogramas para que estas operações ou comandos não entrem em conflito entre si.

Mais informações

O SQL Server regista a hora de início e o fim do Backup na msdb base de dados. Pode analisar o histórico de Backup para determinar se houve uma Backup completa da base de dados enquanto uma Backup incremental foi tentada e, por isso, causou o erro. Pode usar a seguinte consulta para o ajudar neste processo:

select database_name, type, backup_start_date, backup_finish_date
from msdb.dbo.backupset
order by database_name, type, backup_start_date, backup_finish_date
go

Também pode usar o evento de Mensagem de Erro do Utilizador no SQL Profiler Trace ou o evento error_reported nos Eventos Estendidos para acompanhar o relatório das mensagens 3023 de volta à aplicação que iniciou o comando Backup ou outro comando de manutenção.