我的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该作业:开始作业成功,执行作业失败。不知道问题出现在哪?

解决方案 »

  1.   

    如果只是备份.
    --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--属性--启动类型--选择"自动启动"--确定. 
      

  2.   

    SQL server 2005中建立备份自动化任务http://543925535.blog.51cto.com/639838/168511
      

  3.   

    查询分析器运行:exec master..xp_cmdshell 'net use y: \\msserver\D$ "hhlms" /user:msserver\administrator'
    结果:y: 已有到 \\MSSERVER\z 的记录连接。
    是否覆盖记录连接? (Y/N) [Y]: 
    没有提供有效的响应。
    NULL
      

  4.   


    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已经成功,不知道是否正确
      

  5.   


    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$---我将它改成共享的文件夹名称了。本人第一次弄,让大家见笑了。