我有以下存储过程:
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。
答案 0 :(得分:1)
“输出”是什么意思?从存储过程返回信息至少有四种方法:结果集,输出参数,PRINT和返回码。
我认为您不能抑制输出,但您可以将RESTORE语句放在TRY / CATCH块中。如果RESTORE失败,则从CATCH块返回失败代码,否则从主过程体返回成功。
或者,不要使用存储过程而是使用外部脚本。我发现在使用备份和其他需要操作文件名甚至物理文件的操作时,在许多情况下实际上要容易得多。例如,您可以使用Powershell脚本中的Smo。