master数据库下创建存储过程
USE [master]
GO
/****** Object: StoredProcedure [dbo].[bakup_DataBase_Demo] Script Date: 01/07/2015 10:01:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--Full BackUp --Use Master
create proc [dbo].[bakup_DataBase_Demo] as
Declare @strPsw varchar(50)='******'/*目标服务器的登录密码*/
Declare @strUsr varchar(50)='Administrator' /*目标服务器的登录用户*/
Declare @strCmdShell varchar(300) /*连接目标服务器的命令*/
Declare @strDataBaseName varchar(200)='Demo' /*操作数据库名称,也可以是数据库的别名*/
Declare @FullFileName Varchar(200)='Y:\11\' /*备份数据库的本地路径*/
Declare @FileFlag varchar(50) --备份的文件命名规则:日期-小时.bak
Declare @ToFileName varchar(200)='\\192.168.0.8\G$\222222\' /*目标服务器备份数据库的本地路径*/
Declare @SQLCopy varchar(500)
Declare @SQLDel varchar(500) --删除历史备份语句
declare @staydays int=15 /*保留多少天的备份记录,默认保留15天*/
Declare @DeleteFileName varchar(500) /*备份之时要删除的早期备份文件名称*/
Set @FileFlag=replace(convert(char(13),getdate(),20),' ','-') --备份的文件命名规则:日期-时间.bak
Set @strCmdShell= 'net use \\192.168.0.8\c$ ' + @strPsw + ' /user:' +@strUsr --需填写IP(目标机器的IP地址,如:192.168.0.8)
Set @DeleteFileName=replace(convert(char(13),DATEADD(day,-@staydays, getdate()),20),' ','-')+@strDataBaseName+'.BAK'--历史文件名称
Set @SQLDel='del ' +@FullFileName+@DeleteFileName+' del '+@ToFileName+@DeleteFileName --删除历史备份语句
Set @FullFileName+=@FileFlag+@strDataBaseName+'.BAK'--需填写本地备份临时文件的目录,因为需要先备份到本地再copy到目标机器(如:保存目录为E:\SoondyTest\)
Set @SQLCopy='copy '+@FullFileName+' '+@ToFileName /*拷贝到目标机器的命令*/
BackUp DataBase @strDataBaseName To Disk= @FullFileName with init /*备份数据库*/
exec master..xp_cmdshell @strCmdShell--尝试连接到目标机器
exec Master..xp_cmdshell @SQLCopy --拷贝到目标机器上
exec master.. xp_cmdshell @SQLDel--删除本地和服务器的备份临时文件 GO
GO