专业编程基础技术教程

网站首页 > 基础教程 正文

SQL跨服务器异步备份(sqlserver跨服务器插数据)

ccvgpt 2024-08-03 12:37:11 基础教程 13 ℃

问:把大象装冰箱总共分几步?

答:三步,开门.放进去,关门.....哈哈

SQL跨服务器异步备份(sqlserver跨服务器插数据)

异步备份,同样分三步.

1,两台服务器的连通,使用ping 命令测试一下A与B相互之间是否能成功ping通,另外在A、B服务器上,检查服务Computer Browser、Server、Workstation服务是否成功启动,端口139、445是否有开启,如果没有的话,手动启动服务以及开启139、445的监听端口,另外还有一点,要保证两台服务器的“Microsoft的网络的文件和打印机共享”服务有在网络连接处勾选.

通过cmd命令测试下两个服务器的copy功能.

copy d:\Backup\1.txt \\115.239.211.112\newbak$\ (中间有空格)

注释: 115.239.211.112为服务器B的IP地址.newbak 为共享的路径.

附送: 共享文档命令 :net share newbak$=D:\back

2,打开SQL SERVER中的xp_cmdshell功能.

附送:

--启用xp_cmdshell

USE master

EXEC sp_configure 'show advanced options', 1

RECONFIGURE WITH OVERRIDE

EXEC sp_configure 'xp_cmdshell', 1

RECONFIGURE WITH OVERRIDE

EXEC sp_configure 'show advanced options', 0

RECONFIGURE WITH OVERRIDE

--关闭xp_cmdshell

USE master

EXEC sp_configure 'show advanced options', 1

RECONFIGURE WITH OVERRIDE

EXEC sp_configure 'xp_cmdshell', 0

RECONFIGURE WITH OVERRIDE

EXEC sp_configure 'show advanced options', 0

RECONFIGURE WITH OVERRIDE

3、在()运行服务器)上的SQL SERVER的master创建如下存储过程,并且设置作业自动执行:

代码如下:

CREATE proc Backup_DataBase_A1

as

Declare @strPsw varchar(50)

Declare @strUsr varchar(50)

Declare @strCmdShell varchar(300)

Declare @strDataBaseName varchar(20)

Declare @FullFileName Varchar(200)

Declare @FullFileName1 Varchar(200)

Declare @FullFileName2 Varchar(200)

Declare @FileFlag varchar(50)

Declare @FileFlag2 varchar(50)

DECLARE @FileFlag3 varchar(50)

Declare @ToFileName varchar(200)

Declare @SQLStr varchar(500)

Declare @SQLStr2 varchar(500)

Declare @SQLStr3 varchar(500)

Declare @FlagDel varchar(20)

--定义备份的数据库名称

Set @strDataBaseName='A1'

--定义本地备份文件的名称

Set @FileFlag=@strDataBaseName + '_db_' + replace(convert(char(20),getdate(),112),' ','')

--定义本地1天前的备份文件名称

Set @FileFlag3=@strDataBaseName + '_db_' + replace(convert(char(20),getdate()-1,112),' ','')

--定义远程服务器3天前的备份文件名称

Set @FileFlag2=@strDataBaseName + '_db_' + replace(convert(char(20),getdate()-3,112),' ','')

--设置远程服务器的登录域和用户名

Set @strUsr='db-b7ca68c1260d\Administrator'

--设置远程服务器登录密码

Set @strPsw='abc123'

--设置远程服务器连接

Set @strCmdShell= 'net use \\115.239.211.112\j$ ' + @strPsw + ' /user:' +@strUsr

--设置本地备份文件名称

Set @FullFileName='D:\Backup\'+@FileFlag+'.BAK'

--设置本地1天前的备份文件名称

set @FullFileName1='D:\Backup\'+@FileFlag3+'.BAK'

--设置远程服务器3天前的备份文件名称

set @FullFileName2='\\115.239.211.112\j$\db_backup\'+@FileFlag2+'.BAK'

--设置远程服务器保存备份文件目录

Set @ToFileName='\\115.239.211.112\j$\db_backup\'

--设置为True时,即删除备份,设置为False时,即不删除备份文件

Set @FlagDel='True'

--设置从本地复制备份文件至远程服务器的语句

Set @SQLStr='copy '+@FullFileName+' '+@ToFileName

--设置删除本地1天前的备份文件

Set @SQLStr2='del ' +@FullFileName1

--设置删除远程服务器3天前的备份文件

Set @SQLStr3='del ' +@FullFileName2

--备份EliteUC数据库

BackUp DataBase @strDataBaseName To Disk= @FullFileName with init

--连接远程服务器

exec master..xp_cmdshell @strCmdShell

--复制备份文件至远程服务器

exec Master..xp_cmdshell @SQLStr

--删除1天前本地的备份文件

if (@FlagDel ='True')

exec master.. xp_cmdshell @SQLStr2

--删除3天前远程服务器备份文件

if (@FlagDel ='True')

exec master.. xp_cmdshell @SQLStr3

go

最近发表
标签列表