/*两种方法的前提:
1.本地服务器的sqlserver agent服务保证处于启动状态
2.远程计算机(计算机管理里)建立一个普通权限用户,并为其加上密码(例如用户名为kyle,密码为1234),同时在那台机器的非系统盘里建一个名为backup的共享文件夹,为了安全另外设置这个文件夹只有这个kyle用户可以访问(需要ntfs格式才可以设置安全)*/
 
 
--方法1:用“job(作业)”做
declare @sql varchar(500)
select @sql='\\10.2.0.12\backup\dbname'+'_db_'+convert(varchar(10),getdate(),112) +
substring(convert(varchar(10),getdate(),108),1,2) +'.bak'
exec master..xp_cmdshell 'net use \\10.2.0.12\backup 1234 /user:remotehost\kyle'
backup database dbname to disk=@sql 备份数据库,这里的10.2.0.12为远程计算机的ip,backup为共享文件夹名,dbname为本地sqlserver服务器要备份的数据库,remotehost为远程计算机的计算机名,1234为密码,kyle为用户名,请相应替换成实际环境的数据
go
declare @sql varchar(500)
select @sql='del '+'\\10.2.0.12\backup\dbname'+'_db_'+convert(varchar(10),dateadd(day,-7,getdate()),112) +
substring(convert(varchar(10),dateadd(day,-7,getdate()),108),1,2) +'.bak'
exec master..xp_cmdshell @sql --删除7天前的备份,也就是只保留7个最新备份
go
-----------------------------------------------------------------------------------------------------------------------
--方法2:用“数据库维护计划”做
1.本地服务器(计算机管理里)建立一个操作系统用户,例如kyle(用户名和密码需要跟远程计算机所建立的用户情况相同),赋予此用户administrators组权限,加上相应的密码。
2.在企业管理器→右键点击(local)(windows nt)选择属性→在“安全性”选项里的“启动服务帐户”选择使用“本帐号”,在里面填入第一步建立的用户和密码(kyle)。(这里的功能是:用这个跟远程计算机用户名密码一样的用户来启动本地sqlserver,就像做了net use)
3.待kyle用户重启了sqlserver服务后,在数据库维护计划里的“指定备份磁盘目录”这一步手工输入远程计算机地址及共享文件夹名 \\10.2.0.12\backup(10.2.0.12为远程计算机的ip,backup为远程计算机开放的共享文件夹名)
4.更改本地服务器时间,测试异地备份效果。
 
方法3:写成存储过程,建立作业定时备份~~~

--在sql中映射一下就可以了
exec master..xp_cmdshell 'net use z: \\yizhi\D$ "密码" /user:yizhi\administrator'
/*--说明:
exec master..xp_cmdshell 'net use z: \\xz\c$ "密码" /user:xz\administrator'
z:是映射网络路径对应本机的盘符,与下面的备份对应
\\xz\c$是要映射的网络路径
xz\administrator
xz是远程的计算机名,
administrator是登陆的用户名
密码 面指定的administrator用户的密码
--*/
--备份;with init覆盖|noinit添加
backup database 库名 to disk='E:\H_BACKUP.bak' with init
--COPY
exec master..xp_cmdshell 'copy E:\H_BACKUP.bak z:'
--删除(这句可以去掉)
--exec master..xp_cmdshell 'del E:\H_BACKUP.bak'
--完成后删除映射
exec master..xp_cmdshell 'net use z: /delete'