控制存储过程输出

时间:2010-08-25 02:26:27

标签: sql sql-server sql-server-2005 tsql

我有以下存储过程:

SET @sql = 'RESTORE DATABASE ' + quotename(@dbname) + '
            FROM  DISK = N''E:\sql\template_' + @dbnamebak + '.bak''
            WITH  FILE = 1,
            MOVE N''FromTemplate' + @dbname + '.Data'' TO N''E:\sql\' + @dbname + '.mdf'',
            MOVE N''FromTemplate' + @dbname + '.Log'' TO N''E:\sql\' + @dbname + '_log.LDF'', NOUNLOAD';
EXEC (@sql);

我想输出1或0而不是:

Processed 8584 pages for database 'DatabaseName', file 'DatabaseName.Data' on file 1.
Processed 1 pages for database 'DatabaseName', file 'DatabaseName' on file 1.
RESTORE DATABASE successfully processed 8585 pages in 3.929 seconds (17.899 MB/sec).

是否可以控制它?

使用SQL Server 2005。

1 个答案:

答案 0 :(得分:1)

“输出”是什么意思?从存储过程返回信息至少有四种方法:结果集,输出参数,PRINT和返回码。

我认为您不能抑制输出,但您可以将RESTORE语句放在TRY / CATCH块中。如果RESTORE失败,则从CATCH块返回失败代码,否则从主过程体返回成功。

或者,不要使用存储过程而是使用外部脚本。我发现在使用备份和其他需要操作文件名甚至物理文件的操作时,在许多情况下实际上要容易得多。例如,您可以使用Powershell脚本中的Smo。