0

次のような特定のデータベースのデータベースバックアップを実行するストアドプロシージャがあります。

 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.

その理由は何でしょうか?

4

2 に答える 2

0

これは、フォルダの作成に関する問題でした。

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

server1には「Backups」フォルダーがあり、sqlはバックアップを保存できますが、server2にはこのフォルダーがありません。

于 2013-02-26T08:14:50.853 に答える
0

インスタンスを確認してみてください。

http://community.spiceworks.com/topic/157143-sql-server-2008-r2-multiple-instances-on-one-server

于 2013-02-25T09:41:52.843 に答える