SQL 2000中如何实现异地备份

--你是否有足够的权限?如果有足够的权限,可以备份到本机

--如果有,可以用下面的方法,查询分析器中操作:

-- 创建共享目录
exec master.dbo.XP_cmdshell 'md c:/bak'
exec master.dbo.XP_cmdshell 'net share bak=c:/bak'

--进行数据备份
backup database 数据库 to disk='c:/bak/备份.bak'


/*--以下操作在我的电脑中进行:

   打开我的电脑,地址栏中输入:
   //SQL服务器的计算机名/bak/
   复制里面的备份.bak到你的电脑就行了

--我的电脑中的操作结束--
*/


--删除备份生成的文件
exec master..xp_cmdshell 'del c:/bak/备份.bak'

--删除共享
exec master.dbo.XP_cmdshell 'net share c:/bak /delete /y'
exec master.dbo.XP_cmdshell 'rd c:/bak'



--否则,你还是完全共享你本机的目录,用下面的方法备份:
backup database 数据库 to disk='//你的计算机名/共享目录名/备份文件名'

---或通过映射网络驱动器(这样可以解决权限问题)

--1.映射
exec master..xp_cmdshell 'net use z: //xz/c$ "密码" /user:xz/administrator'

/*--说明:
z:            是映射网络路径对应本机的盘符,与下面的备份对应
//xz/c$            是要映射的网络路径
xz/administrator        xz是远程的计算机名,administrator是登陆的用户名
密码                        上面指定的administrator用户的密码
--
*/



--2.进行数据库备份
backup database 数据库名 to disk='z:/备份文件名'


--3.备份完成后删除映射
exec master..xp_cmdshell 'net use z: /delete'

SQL code
   
   
-- 以下代码放在作业里做调度,自动备份、自动删除4天前备份 -- 创建映射 exec master..xp_cmdshell ' net use w: /DatabaseBackup$ "password"/user:Roy ' ,NO_OUTPUT go -- ---2000用游标: declare @s nvarchar ( 200 ), @del nvarchar ( 200 ) select @s = '' , @del = '' declare datebak cursor for select [ bak ] = ' backup database ' + quotename (Name) + ' to disk = '' w: ' + Name + ' _ ' + convert ( varchar ( 8 ), getdate (), 112 ) + ' .bak '' with init ' , [ del ] = ' exec master..xp_cmdshell '' del w: ' + Name + ' _ ' + convert ( varchar ( 8 ), getdate () - 4 , 112 ) + ' .bak '' , no_output ' from master..sysdatabases where dbid > 4 -- 不备份系统数据库 open datebak fetch next from datebak into @s , @del while @@fetch_status = 0 begin exec ( @del ) exec ( @s ) fetch next from datebak into @s , @del end close datebak deallocate datebak go -- 删除映射 exec master..xp_cmdshell ' net use w: /delete ' go -- 2005用max支持2G的字符串 declare @s nvarchar ( max ), @del nvarchar ( max ) select @s = '' , @del = '' select @s = @s + char ( 13 ) + ' backup database ' + quotename (Name) + ' to disk = '' w: ' + Name + ' _ ' + convert ( varchar ( 8 ), getdate (), 112 ) + ' .bak '' with init ' , @del = @del + char ( 13 ) + ' exec master..xp_cmdshell '' del w: ' + Name + ' _ ' + convert ( varchar ( 8 ), getdate () - 4 , 112 ) + ' .bak '' , no_output ' from master..sysdatabases where dbid > 4 order by dbid asc exec ( @del ) exec ( @s )
  
  
   
   SQL code 
  
  
  
  
    
    
企业管理器 -- 管理 -- SQL Server代理 -- 右键作业 -- 新建作业 -- "常规"项中输入作业名称 -- "步骤"项 -- 新建 -- "步骤名"中输入步骤名 -- "类型"中选择"Transact-SQL 脚本(TSQL)" -- "数据库"选择执行命令的数据库 -- "命令"中输入要执行的语句: declare @strsql varchar ( 1000 ) declare @strdirname varchar ( 50 ) declare @strcmd varchar ( 50 ) declare @strsend varchar ( 1000 ) declare @strdate varchar ( 50 ) exec master..xp_cmdshell ' net use //192.168.0.151/d$ Password /user:192.168.0.151/administrator ' set @strsql = ' backup database new_his to disk= '' //192.168.0.151/d$/serverd/ ' set @strdirname = replace ( substring ( convert ( varchar ( 20 ), getdate (), 120 ), 1 , 10 ), ' - ' , '' ) + ' 12 ' set @strcmd = ' md //192.168.0.151/d$/serverd/ ' set @strcmd = @strcmd + @strdirname exec master..xp_cmdshell @strcmd -- print @strsql set @strsql = @strsql + @strdirname + ' /new_hisbackup.dat '' with init,nounload,noskip,noformat ' -- print @strsql exec ( @strsql ) -- --其中写的IP地址及共享目录,网友自行修改,Password一定要正确 -- 确定 -- "调度"项 -- 新建调度 -- "名称"中输入调度名称 -- "调度类型"中选择你的作业执行安排 -- 如果选择"反复出现" -- 点"更改"来设置你的时间安排 然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行 设置方法: 我的电脑 -- 控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值