2013-02-25 101 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上

此文件夾