CREATE PROCEDURE up_BakDataToNet ASbegin
--创建映射
--系统数据库备份为192.168.20.88上的共享文件夹,administrator具有读写权限
--12345为administrator网络访问192.168.20.88的密码exec master..xp_cmdshell 'net use w: \\192.168.20.88\系统数据库备份$ 12345 192.168.20.88/user:administrator',NO_OUTPUT-----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(char(10),getdate(),112)+'.bak''  with init',
    [del]='exec master..xp_cmdshell '' del w:'+Name+'_'+convert(char(10),getdate()-7,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
--删除映射
exec master..xp_cmdshell 'net use w: /delete'
end
GO--大家帮忙看看那里出错了

解决方案 »

  1.   

    BackupDiskFile::CreateMedia: 备份设备“w:T8CRM_20110519  .bak”create 失败。操作系统错误 = 3(系统找不到指定的路径。)。
      

  2.   

    liuhuayang 上个帖子加你给方案啥都不给,光在那里说闲话。#11楼 得分:0回复于:2011-05-14 11:27:42我觉得ls是大公司里的老鸟吧,我们公司买不起磁盘阵列也做不起镜像1 在本地备份(所有人都会这么备份的)2 利用SQL SERVER maintance plan 在将你的文件拷贝到任何地方
    (如果你备份的文件有问题,那么你将备份文件拷贝到其他地方也是徒然)1.所有人都会这么备份的
    2.如果你的备份的文件有问题,那么你将备份文件拷贝到其他地方也是徒然我的回答是1对应你的1,2是对应你的2,然后外加一个网络的和FTP的,
    或者用OS做个系统调度复制到其他服务器请问一下我不外加个网络备份、ftp拷贝,在公司不购买磁盘阵列设备做不起镜像的前提下,
    你还有什么更好的解决方案么? 你这老手真有点冬日娜的感觉!
      

  3.   

    net use命令怎么这么别扭net use w: \\192.168.20.88\系统数据库备份$ 12345 /user:administrator
      

  4.   

    如果administrator帐号存在于对方机器
    net use w: \\192.168.20.88\系统数据库备份$ 12345 /user:192.168.20.88\administrator顺便说一下 不要用映射盘的方式尽量 会带来很多问题
      

  5.   

    因为通过xp_cmdshell方式调用windows接口net use生成的作用于和windows直接调用net use的作用域完全不一样,也就是说相互是不可见的.你可以试试你在sqlserver里通过xp_cmdshell调用net use生成的盘符在windows里是不可见的.但是在有的时候(注意是有时候)这个作用域会有交集,也就是说互相又可见了.这个应该是一个bug,不太清楚2008里面修正了没有就谈谈我以前碰到一个问题就是有系统管理员因为在不知道sqlserver的情况下,建立了映射盘进行文件备份等操作(当然盘符和tsql里面的一致),造成了xp_cmdshell调用出错(agent调用),手动去调试代码又没有任何错误,这个问题浪费了我1天的时间.所以建议还是能不用尽量不用
      

  6.   

    那你的意思是说:
    xp_cmdshell调用cmd命令,有时候对windows来说是看不见的
    而在windows里直接先建立好映射,再用sqlserver来备份,但是
    sqlserver又看不到
    windows里直接先建立好映的映射目录,
    这个我倒测试应验了,但是如果是能够成功应用起来的,那也不是什么坏事情或给你带来什么大问题啊
      

  7.   


    你说的映射目录是什么?我的意思是用\\computer\share 这样的方式来备份(避免建立虚拟盘符) 这样不会有问题 而且也可以用net use进行认证 比如 net use \\computer\share /user:192.168.20.88/administrator
      

  8.   

    右键网上邻居,“映射网络驱动器”,我用delphi做了个程序测试读写映射的网络驱动器,是可以正常使用的,但是这个xp_cmdshell就不行