次のような特定のデータベースのデータベースバックアップを実行するストアドプロシージャがあります。
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 2008r2)。「バックアップデータベースが異常終了しています」という例外が発生します。
バックアップフォルダには同じ権限設定があり、次のようになります。
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.
その理由は何でしょうか?