Sql server 返回数据库备份查询结果的输出参数值
我创建了一个创建数据库备份的过程。我想返回一个输出参数,用于成功备份或出现错误。但我不知道如何从消息面板捕捉此类消息Sql server 返回数据库备份查询结果的输出参数值,sql-server,output,database-backups,Sql Server,Output,Database Backups,我创建了一个创建数据库备份的过程。我想返回一个输出参数,用于成功备份或出现错误。但我不知道如何从消息面板捕捉此类消息 CREATE PROCEDURE [DBO].[P_DB_BACKUP] (@v_result int = 0 output) AS DECLARE @today_date VARCHAR(10) = convert(VARCHAR(10), getdate(), 120); DECLARE @sqlCommand VARCHAR(1000) BEGIN
CREATE PROCEDURE [DBO].[P_DB_BACKUP]
(@v_result int = 0 output)
AS
DECLARE @today_date VARCHAR(10) = convert(VARCHAR(10), getdate(), 120);
DECLARE @sqlCommand VARCHAR(1000)
BEGIN
SET @sqlCommand = 'backup database TEMP to disk =''D:TEMP_BCK_'+@today_date+'.BAK'' ';
EXEC (@sqlCommand);
END;
当我运行该过程时,我会收到消息
已处理文件1上数据库“TEMP”和文件“TEMP”的608页。已处理文件1上数据库“TEMP”和文件“TEMP_log”的2页。
备份数据库在0.458秒(10.405 MB/秒)内成功处理了610页
我的问题是关于这条消息,我应该能够为输出参数
@v_result
返回1,如果出现任何错误,则返回-1。还有别的方法吗?请帮忙 您可以像这样在存储过程中使用Try-Catch-
CREATE PROCEDURE [DBO].[P_DB_BACKUP]
(
@v_result int = 0 output
)
AS
BEGIN
DECLARE @today_date VARCHAR(10) = convert(VARCHAR(10), getdate(), 120);
DECLARE @sqlCommand VARCHAR(1000)
BEGIN TRY
SET @sqlCommand = 'backup database TEMP to disk =''D:TEMP_BCK_'+@today_date+'.BAK'' ';
EXEC (@sqlCommand);
SET @v_result = 1;
END TRY
BEGIN CATCH
SET @v_result = -1;
RAISERROR('YOUR ERROR MESSAGE', 16, 1);
END CATCH
END
您可以将一个简单的变量添加到现有的结构中,该结构存储backup语句的返回值
CREATE PROCEDURE [DBO].[P_DB_BACKUP]
(@v_result int = 0 output)
AS
DECLARE @today_date VARCHAR(10) = convert(VARCHAR(10), getdate(), 120);
DECLARE @sqlCommand VARCHAR(1000)
DECLARE @iSQLStmtRet AS INT = 0 -- <== new!!
BEGIN
SET @sqlCommand = 'backup database TEMP to disk =''D:TEMP_BCK_'+@today_date+'.BAK'' ';
EXEC @iSQLStmtRet = sp_executesql @sqlCommand; -- <== modified
END;
IF @iSQLStmtRet != 0
BEGIN
PRINT '-------------------------------------------------'
PRINT ' Error during backup of ' + @nvDB2Backup + '!'
PRINT ' Errocode: ' + cast(@iSQLStmtRet as nvarchar(20))
PRINT '-------------------------------------------------'
END