SQL Server 日志传送到同一台服务器复制作业的权限问题

问题描述

我不熟悉日志传送并尝试在测试环境中进行设置。

数据库和辅助数据库位于同一服务器上的同一实例上(用于测试目的)。我正在备份到 azure 存储位置,然后以与该存储位置不同的名称进行恢复。我正在将事务日志写入相同的存储位置。这是它崩溃的地方。无法从网络位置复制到本地文件夹。如果我手动复制,则恢复工作正常。如果我可以写入它,为什么我不能从中读取?

错误是:

错误用户名或密码不正确

我在一个工作组,而不是一个域中,所以这可能会使这变得更加困难。

这是我使用的代码

/* Run on Primary server */
    USE [master];
    GO
    ALTER DATABASE PrimaryDb SET RECOVERY FULL WITH NO_WAIT;
    GO
    ----------
    BACKUP DATABASE PrimaryDb
    TO disK = '\\OurCompany.file.core.windows.net\LogShipping\LS_Test\PrimaryDb_Backup.bak'
        WITH 
            FORMAT,INIT,COMPRESSION,MEDIANAME   = 'PrimaryDb',NAME        = 'PrimaryDb';  
GO

/* Run on Secondary server */
RESTORE DATABASE SecondaryDB 
    FROM disK = '\\OurCompany.file.core.windows.net\LogShipping\LS_Test\PrimaryDb_Backup.bak'
    WITH
        NOUNLOAD,STATS = 10,MOVE 'SecondaryDB'      TO 'F:\Databases\SecondaryDB\SecondaryDB.mdf',MOVE 'SecondaryDB_log'  TO 'F:\Databases\SecondaryDB\SecondaryDB_1.ldf',STANDBY                 =  'F:\Databases\SecondaryDB\SecondaryDB_Standby.bak';
        --norECOVERY;
GO

----------     ----------     ----------     ----------     ----------     ----------     ----------     ----------     ----------     ----------     ----------
/* BEGIN Setup log shipping on Primary */
    DECLARE @BackupJobId AS UNIQUEIDENTIFIER,@PrimaryId AS UNIQUEIDENTIFIER,@RetCode AS INT /* 0 (success) or 1 (failure) */

    exec @RetCode = master..sp_add_log_shipping_primary_database
        @database                   = 'PrimaryDb',@backup_directory           = '\\OurCompany.file.core.windows.net\LogShipping\LS_Test',@backup_share               = '\\OurCompany.file.core.windows.net\LogShipping\LS_Test',@backup_job_name            =  'LS_Test_Backup',@backup_retention_period    = 1440,/* 1 day */
        @backup_threshold           = 45,/* Minutes */
        @threshold_alert_enabled    = 1,@history_retention_period   = 5760,/* 4 days */
        @overwrite                  = 1,@backup_compression         = 1,@backup_job_id              = @BackupJobId OUTPUT,@primary_id                 = @PrimaryId OUTPUT;
    ----------
    IF (@@ERROR = 0 AND @RetCode = 0) 
        BEGIN 
            DECLARE @BackUpScheduleUID  as UNIQUEIDENTIFIER,@BackUpScheduleID   as INT

            exec msdb..sp_add_jobschedule
                @job_id                 = @BackupJobId,@name                   = 'Every_5_Min',@enabled                = 1,@freq_type              = 4,/* 4 = Daily */
                @freq_interval          = 1,/* Every 1 day */
                @freq_subday_type       = 4,/* 4 = In minutes */
                @freq_subday_interval   = 5,/* Every 5 minutes */
                @schedule_id            = @BackUpScheduleID OUTPUT,@schedule_uid           = @BackUpScheduleUID OUTPUT;

            exec msdb..sp_update_job @job_id = @BackupJobId,@enabled = 1;
        END
/* END Setup log shipping on Primary */
----------     ----------     ----------     ----------     ----------     ----------     ----------     ----------     ----------     ----------     ----------
GO
/* Switch to Secondary server */
/* BEGIN Setup log shipping on Secondary */

    DECLARE @copyJobID    as UNIQUEIDENTIFIER,@RestoreJobID as UNIQUEIDENTIFIER,@SecondaryID  as UNIQUEIDENTIFIER,@RetCode      as INT

    EXEC @RetCode = master..sp_add_log_shipping_secondary_primary 
       @primary_server                  = 'SandBox',@primary_database                = 'PrimaryDB',@backup_source_directory         = '\\OurCompany.file.core.windows.net\LogShipping\LS_Test',@backup_destination_directory    = 'F:\Local_LogShipping_Dest_Test',@copy_job_name                   = 'LS_Test_copy',@restore_job_name                = 'LS_Test_Restore',@file_retention_period           = 300,/* Minutes */
       @copy_job_id                     = @copyJobID OUTPUT,@restore_job_id                  = @RestoreJobID OUTPUT,@secondary_id                    = @SecondaryID OUTPUT
    -----
    IF(@@ERROR = 0 AND @RetCode = 0)
    BEGIN
        DECLARE @SecondarycopyJobScheduleUID UNIQUEIDENTIFIER,@SecondarycopyJobScheduleID  INT
        /* BEGIN copY Job */
        exec msdb..sp_add_jobschedule
            @job_id                 = @copyJobID,@name                   = 'Every5Mincopy',/* 4 = Daily */
            @freq_interval          = 1,/* Every 1 day */
            @freq_subday_type       = 4,/* 4 = In minutes */
            @freq_subday_interval   = 5,/* Every 5 minutes */
            @schedule_id            = @SecondarycopyJobScheduleID OUTPUT,@schedule_uid           = @SecondarycopyJobScheduleUID OUTPUT;  
        /* END copY Job */
        ----------
        DECLARE @SecondaryRestoreJobScheduleUID   UNIQUEIDENTIFIER,@SecondaryRestoreJobScheduleID   INT;

        exec msdb..sp_add_jobschedule
            @job_id                 = @RestoreJobID,@name                   = 'Every5MinRestore',/* Every 5 minutes */
            @schedule_id            = @SecondaryRestoreJobScheduleID OUTPUT,@schedule_uid           = @SecondaryRestoreJobScheduleUID OUTPUT;

        /*  */
        exec msdb..sp_update_job @job_id = @copyJobID,@enabled = 1; 
        exec msdb..sp_update_job @job_id = @RestoreJobID,@enabled = 1;
    END
/* END Setup log shipping on Secondary */


/* Setup Secondary for Log Shipping */
    exec sp_add_log_shipping_secondary_database  
        @secondary_database = 'SecondaryDB',@primary_server     = 'SandBox',@primary_database   = 'PrimaryDB',@restore_mode       =  1,/* 0 = norECOVERY,1 = STANDBY. */
        @disconnect_users   = 1,@overwrite          = 1

/* Run on Primary */
    EXEC master..sp_add_log_shipping_primary_secondary
        @primary_database = 'PrimaryDB',@secondary_server = 'SandBox',@secondary_database = 'SecondaryDB',@overwrite = 1

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)