@xuxuzhaozhao
2018-05-14T07:12:41.000000Z
字数 1601
阅读 507
踩了不少坑,在Google和StackoverFlow的帮助下成功帮我们项目中实现了SqlServer的异地备份。现记录,以帮助需要之同行。
文件服务器:(里面有无数据库不影响)
IP地址 | 192.168.33.**8 |
---|---|
服务器系统 | Windows Server 2012 |
服务器名称 | WIN-A6O73BD*** |
SqlServer数据库所在服务器:
IP地址 | 192.168.33.**0 |
---|---|
服务器系统 | Windows Server 2012 |
服务器名称 | WIN-L6D5JH*** |
SqlServer版本 | SqlServer 2012 |
2.创建共享文件夹->本地地址为:C:\bakFolder
(对应的网络路径为\\WIN-A6O73B***\bakFolder
)
* 设置共享文件夹的用户为dbbakuser
,并赋予读取与更改的权限;
* 在高级共享中做同样的设置;
* 在数据库服务器测试共享文件夹可以使用共享服务器上新建的用户dbbaker
正常访问
* 在数据库服务器上打开cmd
窗口,通过命令NET USE Z: \\WIN-A6O73B***\bakFolder 你设置的密码 /USER:dbbakuser
* 如果可以正常访问则继续下一步;
在数据库服务器上,通过DBMS中的SQL Server 代理新建作业;
常规设置
需要注意这里的所有者,必须是sa或者与sa拥有同等权限的用户;
名称是必填项,其他选项可以不做改动;
步骤名称是必填项;
命令如下,请对应修改:
sys.sp_configure @configname = 'allow_updates',
@configvalue = 0;
RECONFIGURE WITH OVERRIDE;
GO
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 = '\\WIN-A6O73B***\bakFolder\SanF***190_bakup_' +
CONVERT(VARCHAR(10),GETDATE(),112) + '-' + REPLACE(CONVERT(VARCHAR(10),GETDATE(),108),':','') + '.bak'
EXEC master..xp_cmdshell "NET USE Z: \\WIN-A6O73B***\bakFolder 你设置的密码 /USER:dbbakuser"
BACKUP DATABASE SanFengNew 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
sys.sp_configure @configname = 'allow_updates',
@configvalue = 1;
RECONFIGURE WITH OVERRIDE;
GO
在新建的作业上右键点击作业执行步骤,则作业则会执行,会返回执行结果。
如果遇到问题,则可以在新建的作业上右键点击查看历史记录,里面包含详细的错误信息;
根据错误信息进行相应修改,直到作业成功执行。
查看历史记录的错误时请点开记录前的+,以便查看详细信息;