2013-02-25 672 views
0

我有一个存储过程,这对于一个特定的数据库这样进行数据库备份:BACKUP DATABASE正在异常终止

ALTER PROC [dbo].[SP_Backup] 
    @DataBaseName NVARCHAR(500) = NULL 
    @fullPath NVARCHAR(500) OUTPUT 
AS 
    BEGIN 
     DECLARE @dbpath NVARCHAR(500); 
      SELECT @DataBaseName = DB_NAME() 
      SELECT @dbpath = physical_name 
      FROM sys.database_files 
      WHERE (name = N'myDb'); 
      SELECT @fullPath = SUBSTRING(@dbpath, 0, 
           LEN(@dbpath) - CHARINDEX('\', 
           REVERSE(@dbpath) 
           + '\') + 1); 
      SELECT @fullPath = @fullPath + N'\Backups\' + @DataBaseName + N'.bak' 
      BACKUP DATABASE @DataBaseName 
     TO DISK = @fullPath; 
    END; 

的问题是,它在一台服务器上的工作,并不会在另一台服务器上运行(服务器在同一台机器上 - sql 2008 r2)。我得到异常“BACKUP DATABASE异常终止”。

备份文件夹具有相同的权限设置,都是这样的:

C:\Program Files\Microsoft SQL Server\MSSQL10_50.Server1\MSSQL\DATA\Backup 
C:\Program Files\Microsoft SQL Server\MSSQL10_50.Server2\MSSQL\DATA\Backup 

和SQL用户也一样;

在日志文件中有如下信息:

Error: 18204, Severity: 16, State: 1. 
BackupDiskFile::CreateMedia: Backup device 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.Server2\MSSQL\DATA\Backups\myDb.bak' failed to create. Operating system error 3(failed to retrieve text for this error. Reason: 1815). 
Error: 3041, Severity: 16, State: 1. 
BACKUP failed to complete the command BACKUP DATABASE myDb. Check the backup application log for detailed messages. 

可能是什么原因呢?

回答

0

这是与创建文件夹的问题。

SELECT @fullPath = @fullPath + N'\Backups\' + @DataBaseName + N'.bak' 

server1的有“备份”文件夹和SQL可以节省它的备份,但没有在Server2上

此文件夹