文章目录

  • 环境介绍
  • 步骤
  • 在服务器b上建立共享文件夹
  • 在服务器a数据库做如下操作
  • 数据库master中建立存储过程procbakup_DataBase
  • 启动SQL Server代理服务
  • 数据库建立维护计划
  • 测试
  • 点击作业执行后出现出操作系统错误 5(拒绝访问)
  • 数据库权限设定
  • 硬盘权限设定


环境介绍

a)Sql Server 2008 R2 服务器
b)10.99.12.9为服务器a,10.99.236.162为服务器b
c)需要将服务器a数据库dangan远程备份到服务器b上

步骤

在服务器b上建立共享文件夹

在服务器b建立共享文件夹命名为SQLbf

在服务器a数据库做如下操作

数据库master中建立存储过程procbakup_DataBase

USE [master]
GO

/****** Object:  StoredProcedure [dbo].[procbakup_DataBase]    Script Date: 06/05/2019 10:03:19 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[procbakup_DataBase]

as

Declare @strCmdShell varchar(300)

Declare @strDataBaseName varchar(20)

Declare @FlagDel varchar(20)

Declare @SQLNetCon varchar(500)

Declare @addDBName varchar(500)

Declare @delDBName varchar(500)

Declare @delDBName2 varchar(500)

Declare @ToFilePath varchar(500)

Set @strDataBaseName='dangan'--填写数据库名称

Set @addDBName=@strDataBaseName+ '_db_' + replace(replace(convert(char(20),getdate(),20),':','-'),' ','-')
 --备份的文件命名规则:yyyy-mm-dd hh:mi:ss.bak

Set @delDBName=@strDataBaseName + '_db_' +replace(replace(convert(char(20),getdate()-7,23),':','-'),' ','-')
 --7天前的文件命名规则:yyyy-mm-dd.bak

Set @ToFilePath='H:\'+@addDBName+'.BAK'

Set @FlagDel='True'--填写True表示删除备份文件,填写False或其他字符不删除

Set @SQLNetCon='net use H: \\10.99.236.162\SQLbf 用户密码/user:用户账号'
--exec master..xp_cmdshell'net use h: \\远程IP\ 远程共享目录"用户密码" /user: 远程IP \Administrator' 
--注意H后有空格   

Set @delDBName2 ='del ' + 'H:\'+ @delDBName+ '*.BAK'

exec Master..xp_cmdshell 'net use * /d /y'--删除旧链接

exec Master..xp_cmdshell  @SQLNetCon --建立新连接

BackUp DataBase  @strDataBaseName  To Disk= @ToFilePath  with init 
--备份数据库到映射的H盘

if (@FlagDel ='True')exec master.. xp_cmdshell @delDBName2 
--执行删除本地的备份临时文件

exec Master..xp_cmdshell 'net use * /d /y'--删除链接


GO

启动SQL Server代理服务

SQL Server 2016如何跨服务器备份 sqlserver2008异地备份_数据库

数据库建立维护计划

打开SQL Server 企业管理器,在指定需要备份的数据库上面,新建一个维护计划。可按需要设定将来运行这个维护计划的时间/周期。

SQL Server 2016如何跨服务器备份 sqlserver2008异地备份_SQL2008R2_02


选择“执行T-SQL 语句任务”

SQL Server 2016如何跨服务器备份 sqlserver2008异地备份_数据库_03


选择语句任务,右击——编辑

SQL Server 2016如何跨服务器备份 sqlserver2008异地备份_SQL2008R2_04


 输入:EXECUTE master.dbo.bakup_DataBase,确定即可

SQL Server 2016如何跨服务器备份 sqlserver2008异地备份_操作系统错误 5(拒绝访问)_05

测试

找到相应的维护计划,右击——执行

SQL Server 2016如何跨服务器备份 sqlserver2008异地备份_操作系统错误 5(拒绝访问)_06


作业完成后,服务器b可以看到生成的数据备份

SQL Server 2016如何跨服务器备份 sqlserver2008异地备份_SQL2008R2_07

点击作业执行后出现出操作系统错误 5(拒绝访问)

数据库权限设定

首先找到该数据库文件的mdf和ldf,右击属性–安全–编辑,添加everyOne用户,并勾选完全控制,保存

硬盘权限设定

如果设定数据库权限后不能解决问题,应该是由于备份目标驱动器的分区的文件系统是NTFS,权限设置不足造成的
需在要备份的硬盘上右击->属性->安全,添加Users用户,赋给所有的权限,问题解决。

完成以上设置后找到对应维护计划,执行即可。~~!!