我的A服务器是win2008+SQL2008B服务器是win2000+SQL2000
准备将A服务器上的 一个数据库 每天自动备份的B服务器,成功映射b服务器的磁盘:y作业语句:exec master..xp_cmdshell 'net use y: \DatabaseBackup$ "hhlms"/user:aiministrator',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 =''y:'+Name+'_'+convert(varchar(8),getdate(),112)+'.bak'' with init',
[del]='exec master..xp_cmdshell '' del y:'+Name+'_'+convert(varchar(8),getdate()-4,112)+'.bak'', no_output'
from master..sysdatabases where dbid>4 --不备份系统数据库
open datebakfetch 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该作业:开始作业成功,执行作业失败。不知道问题出现在哪?
准备将A服务器上的 一个数据库 每天自动备份的B服务器,成功映射b服务器的磁盘:y作业语句:exec master..xp_cmdshell 'net use y: \DatabaseBackup$ "hhlms"/user:aiministrator',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 =''y:'+Name+'_'+convert(varchar(8),getdate(),112)+'.bak'' with init',
[del]='exec master..xp_cmdshell '' del y:'+Name+'_'+convert(varchar(8),getdate()-4,112)+'.bak'', no_output'
from master..sysdatabases where dbid>4 --不备份系统数据库
open datebakfetch 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该作业:开始作业成功,执行作业失败。不知道问题出现在哪?
--SQL如何备份到异机写成存储过程,建立作业定时备份~~~
--在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'
如果需要定时作业,如下:
定时作业的制定企业管理器
--管理
--SQL Server代理
--右键作业
--新建作业
--"常规"项中输入作业名称
--"步骤"项
--新建
--"步骤名"中输入步骤名
--"类型"中选择"Transact-SQL 脚本(TSQL)"
--"数据库"选择执行命令的数据库
--"命令"中输入要执行的语句:
EXEC 存储过程名 ... --该存储过程用于创建表 --确定
--"调度"项
--新建调度
--"名称"中输入调度名称
--"调度类型"中选择你的作业执行安排
--如果选择"反复出现"
--点"更改"来设置你的时间安排
然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行 设置方法:
我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.
结果:y: 已有到 \\MSSERVER\z 的记录连接。
是否覆盖记录连接? (Y/N) [Y]:
没有提供有效的响应。
NULL
create proc backup_to
as
begin
EXEC master..xp_cmdshell 'net use y: \\MSSERVER\hhlms/user:MSSERVER\administrator ""'BACKUP database ms888888 to disk='e:\888.bak'with initEXEC xp_cmdshell 'copy e:\888.bak \\MSSERVER\hhlms'EXEC master..xp_cmdshell 'net use z: /delete'end已经成功,不知道是否正确
ok,运行成功,就是映射语句的问题,首先感谢fredrickhu还有其他几位朋友!我在sql2008代理(sql agent)下面创建作业:
分三个步骤:1/连接映射磁盘:exec master..xp_cmdshell
'net use z: \\192.168.10.1\e$ "******" /user:192.168.10.1\administrator' 2/备份数据库到本机:backup database 库名 to disk='E:\H_BACKUP.bak' with init 3/将备份的数据库备份到B机器问题就出在e$---我将它改成共享的文件夹名称了。本人第一次弄,让大家见笑了。