日期:2014-05-17  浏览次数:20522 次

一个备份作业总是报错
新建了一个作业,用来批量备份数据库,但是只能备份一次,第二次就报错,日志是:

已以用户 NT AUTHORITY\SYSTEM 的身份执行。 数据库中已存在名为 'Usp_BackUp_DataBase' 的对象。 [SQLSTATE 42S01] (错误 2714).  该步骤失败。

请高手指教,谢谢!

下面是脚本,请帮忙检查:

Use master
GO
/*=================Usp_BackUp_DataBase========================
  =====BackUp Sigle DataBase                            ======
  =====Ken.Guo                                          ======
  =====2010.9.10                                         ======
  =====Version: 2005 & 2008 SQL Server                  ======
  =====EXEC Usp_BackUp_DataBase 'MyDB','F:\Backup\MSsql'      ======
  ============================================================
*/
CREATE PROC   [dbo].[Usp_BackUp_DataBase] @DatabaseName   nvarchar(200),@Path   nvarchar(200)   
AS  
  BEGIN 
  DECLARE   @fn   varchar(200)
           ,@sql   varchar(1000)   
  SET   @fn   =   @Path   +(case   when   right(@Path,1)   <>'\'   then   '\'   else   ''   end)   
  +@DatabaseName+'_'   
  +convert(char(8),getdate(),112)+'_'   
 +replace(convert(char(8),getdate(),108),':','')   
  +'.bak'   
  set   @sql   =   'backup   database   '+@DatabaseName   +   '   to   disk   =   N'''   +   @fn   +   ''''   
  --SELECT @sql 
  EXEC(@sql)  
  END

GO

Use master
GO
/*=============BackUp Mutile DataBase=========================*/
DECLARE @dbname nvarchar(200)
       ,@backup_path nvarchar(200)
SET @backup_path='F:\Backup\MSsql'
DECLARE db_info CURSOR 
    LOCAL 
    STATIC 
    READ_ONLY 
    FORWARD_ONLY 
FOR
  SELECT 
      name 
  FROM master.sys.databases WITH(NOLOCK) 
  WHERE 
      database_id>4

OPEN db_info
FETCH NEXT FROM db_info INTO @dbname

WHILE @@FETCH_STATUS=0