declare @bkfile nvarchar(1000)
set @bkfile='\\192.0.0.11\d:\backup.bak'
backup database airport to disk=@bkfile代码如上,但是用查询分析器执行时提示“设备出现错误或设备脱机”,请问这代码错在哪里?

解决方案 »

  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' 
      

  2.   

    --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' 
      

  3.   

    --在sql中映射一下就可以了
    exec master..xp_cmdshell 'net use z: \\yizhi\D$ "module" /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 holytron to disk='E:\H_BACKUP.bak' with init--COPY
    exec master..xp_cmdshell 'copy E:\H_BACKUP.bak z:'--完成后删除映射
    exec master..xp_cmdshell 'net use z: /delete'——————————————————————————————————参考:(局域网内)--在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'
    ————————————————————————————————————
    自动完成异地备份1、共享本地文件夹 D:\temp 共享名为 test
    net share test = D:\temp2、执行SQL在数据库服务器上创建映射 z:
    exec master..xp_cmdshell 'net use z: \\server\test 密码 /user:administrator'3、执行备份
    backup database Northwind to disk = 'z:\\Northwind_20060101.bak'4、删除数据库服务器上的映射 z:
    exec master..xp_cmdshell 'net use z: /delete'5、取消本机共享文件夹 test
    net share test /delete
      

  4.   

    这里提供两种方法:1,写成存储过程,建立作业定时备份--在sql中映射一下 
    exec master..xp_cmdshell 'net use z: \\computer_name\D$ "密码" /user:computer_name\administrator' 
    /*--说明: 
    z:是映射网络路径对应本机的盘符,与下面的备份对应 
    \\computer_name\D$是要映射的网络路径 
    computer_name是远程的计算机名, 
    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'2,调度企业管理器 --管理 --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\' s
    et @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--属性--启动类型--选择"自动启动"--确定.
      

  5.   

    exec master..xp_cmdshell 'net use z: \\yizhi\D$ "密码" /user:yizhi\administrator' net use--批处理命令
    z:--本地虚拟盘符(用来接受 \\yizhi\D$ )
    \\yizhi\D$--远程主机名及工作目录
    "密码"--远程主机管理员密码
    /user:yizhi\administrator--远程主机管理员账户先仿照这个 建立IPC连接  把远程硬盘映射到本地然后用你的方法 就可以了
      

  6.   

    谢谢各位,但还是不行,提示”系统发生67错误,找不到网络名“,我用的是IP地址,如下:exec master..xp_cmdshell 'net use z: \\192.0.0.11\d: "123456" /user:192.0.0.11\administrator'我写的有问题?错在哪?
      

  7.   

    exec master..xp_cmdshell 'net use z: \\192.0.0.11\d$ "123456" /user:192.0.0.11\administrator' 
      

  8.   

    exec master..xp_cmdshell 'net use z: \\192.0.0.11\d: "123456" /user:"administrator"' 
      

  9.   

    谢谢,上面的问题解决了,原因是D后面不跟冒号,什么也不要。但是新的问题,我要复制的文件名是动态的,该怎么办?完整代码如下:exec master..xp_cmdshell 'net use e: \\192.0.0.11\d "123456" /user:192.0.0.11\administrator'
    declare @bkfile nvarchar(1000)
    set @bkfile='d:\'+substring(convert(char(10),getdate(),112),5,4)+'_'+stuff(convert(char(5),getdate(),108),3,1,'')+'.bak'
    backup database airport to disk=@bkfile
    exec master..xp_cmdshell 'copy @bkfile e:\backup\'
    exec master..xp_cmdshell 'net use e: /delete' 前面的都提示成功,就是执行到copy @bkfile e:\backup\这一句,提示错误:“系统找不到指定的文件”
      

  10.   

    exec master..xp_cmdshell 'net use z: \\192.0.0.11\d: "123456" /user:administrator' IP不用
      

  11.   


    exec master..xp_cmdshell 'net use e: \\192.0.0.11\d "123456" /user:192.0.0.11\administrator' 
    declare @bkfile nvarchar(1000) 
    set @bkfile='d:\'+substring(convert(char(10),getdate(),112),5,4)+'_'+stuff(convert(char(5),getdate(),108),3,1,'')+'.bak' 
    backup database airport to disk=@bkfile 
    set @bkfile ='copy '+@bkfile+' e:\backup\'
    exec master..xp_cmdshell @bkfile
    exec master..xp_cmdshell 'net use e: /delete'