缺少完整备份时,以下代码将引发错误。
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
答案 0 :(得分:0)
不确定错误号本身对您的重要性,但是您可以尝试以下方法:
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语句会为您生成一个自定义错误。除了引发错误外,您还可以在此处执行其他操作。希望有帮助。
答案 1 :(得分:0)
SQL错误4214主要在您从未进行完全备份并且仅尝试备份日志时发生。要解决此问题,请执行完整的数据库备份,然后尝试进行日志备份。