SQL Server 2012自动异地备份

因为服务器有可能出现数据丢失的情况,所以有必要做一下异地备份计划。
网上的资料有很多,但是操作过程中还是遇到了一些问题,现在整理一下自己的操作步骤,以便后面查询。
网上提到的备份方案有几种,这里用的是SQL Server代理中的作业进行的。

版本及服务器信息

共享服务器:Windows Server 2008
数据库服务器:Windows Server 2012
DBMS:SQL Server 2012

  • 共享服务器
    IP:192.168.1.123;
    计算机名称:BakServer;
  • 数据库服务器
    IP:192.168.1.456;
    计算机名称:DBServer;
  • 数据库
    待备份数据库名称:MyDataSource;

创建专用共享账户

在共享服务器上创建用户dbbaker,用户类型选择标准用户即可,设置好符合复杂度的密码;
这里设置的密码为Du4*Gyn@
对该用户适当的降低权限;

创建共享目录

  • 在共享服务器上创建共享目录,例如我这里创建的共享目录的本地路径为H:/BakFiles
    共享后的网络路径为\\BakServer\BakFiles
  • 设置共享目录的用户为dbbaker,并赋予读取与更改的权限;
    共享文件夹
  • 在高级共享中做同样的设置;
    设置高级共享
  • 在数据库服务器测试共享文件夹可以使用共享服务器上新建的用户dbbaker正常访问
    在数据库服务器上打开cmd窗口,通过命令NET USE Z: \\BakServer\BakFiles Du4*Gyn@ /USER:dbbaker如果可以正常访问则继续下一步;

新建作业

  • 在数据库服务器上,通过DBMS中的SQL Server 代理新建作业;
    右键新建作业
  • 常规设置
    需要注意这里的所有者,必须是sa或者与sa拥有同等权限的用户;
    名称是必填项,其他选项可以不做改动;
    常规设置
  • 新建步骤
    步骤名称是必填项;
    命令如下,请对应修改:

    sys.sp_configure @configname = 'show advanced options',
                 @configvalue = 1
    RECONFIGURE
    GO 
    sys.sp_configure @configname = 'xp_cmdshell', @configvalue = 1 RECONFIGURE GO DECLARE @bakpath NVARCHAR(500) SET @bakpath = '\\BakServer\BakFiles\MyDataSource_bakup_' + CONVERT(VARCHAR(10),GETDATE(),112) + '-' + REPLACE(CONVERT(VARCHAR(10),GETDATE(),108),':','') + '.bak' EXEC master..xp_cmdshell 'NET USE Z: \\BakServer\BakFiles Du4*Gyn@ /USER:dbbaker' BACKUP DATABASE i8office TO DISK = @bakpath GO sys.sp_configure @configname = 'xp_cmdshell', @configvalue = 0 RECONFIGURE GO sys.sp_configure @configname = 'show advanced options', @configvalue = 0 RECONFIGURE GO 

    设置步骤
    其他设置默认即可。

  • 新建计划
    在计划选项卡下选择新建计划;
    根据自身需求填写备份执行的时间及间隔等等;
    设置计划
  • 其他设置
    警报,通知,目标这里不做设置。

排查问题

在新建的作业上右键点击作业执行步骤,则作业则会执行,会返回执行结果。
如果遇到问题,则可以在新建的作业上右键点击查看历史记录,里面包含详细的错误信息;
根据错误信息进行相应修改,直到作业成功执行。
查看历史记录的错误时请点开记录前的+,以便查看详细信息;
历史记录

猜你喜欢

转载自www.cnblogs.com/SyncNavigator8-4-1/p/10977922.html