Номер ошибки захвата журнала сбоя резервного копирования - PullRequest
0 голосов
/ 24 августа 2018

Приведенный ниже код выдает ошибку, если отсутствует полная резервная копия.

BACKUP LOG [TESTDB] TO DISK = 'C:\DBADMIN\Backup\TESTDB_LOG.BAK' 

Сообщение 4214, Уровень 16, Состояние 1, Строка 4
Невозможно выполнить BACKUP LOG, поскольку существуетнет текущей резервной копии базы данных.

Сообщение 3013, Уровень 16, Состояние 1, Строка 4
РЕЗЕРВНОЕ КОПИРОВАНИЕ аварийно завершается.

Я пытаюсь захватить номер ОШИБКИоператор с приведенным ниже кодом, но не смог зафиксировать ошибку 4214.

   BEGIN TRY 
      BACKUP LOG [TESTDB] TO DISK = 'C:\DBADMIN\Backup\TESTDB_LOG.BAK' 
   END TRY
   BEGIN CATCH
      SELECT ERROR_NUMBER() AS 'ERROR_NUMBER';
   END CATCH

Вывод:

  ERROR_NUMBER 3013

Пожалуйста, кто-нибудь может мне помочь, чтобы захватить номер ошибки 4214

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Ошибка SQL 4214 в основном возникает, когда вы никогда не делали полное резервное копирование и пытаетесь создать резервную копию только журнала. Чтобы решить эту проблему, выполните полное резервное копирование базы данных, а затем попытайтесь создать резервную копию журнала.

0 голосов
/ 25 августа 2018

Не уверен, насколько важен сам номер ошибки, но вы можете попробовать что-то вроде:

DECLARE @inputFile NVARCHAR(100);
DECLARE @Exists int;

SET @inputFile = 'C:\DBADMIN\Backup\TESTDB_LOG.BAK' 
EXEC master.dbo.xp_fileexist @inputFile, @Exists OUTPUT

BEGIN TRY 
   IF @Exists = 1
      BACKUP LOG [TESTDB] TO DISK =  @inputFile
   ELSE
   EXEC sys.sp_addmessage @msgnum = 54214,@severity = 16,@msgtext  = N'BACKUP LOG cannot be performed because there is no current database backup.',@lang = 'us_english';   
     RAISERROR (54214,16,1)
   END TRY
   BEGIN CATCH
      SELECT ERROR_NUMBER() AS 'ERROR_NUMBER',  ERROR_MESSAGE() as 'ERROR_MESSAGE';
   END CATCH

Инструкция ELSE генерирует для вас пользовательскую ошибку, если файл не существует. Здесь вы можете сделать что-то другое, кроме сообщения об ошибке. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...