我把你的这段   declare @sql varchar(8000)
set @sql ='e:\sjk\sj'+convert(char(8),dateadd(h,-6,getdate()),112)+replace(convert(char(6),dateadd(h,-6,getdate()),108),':','')+'.bak'          
exec xp_cmdshell 'del '+@sql  放在  declare   @htwb   varchar(100)   
  set   @htwb='e:\sjk\sj'+convert(char(8),getdate(),112)+replace(convert(char(6),getdate(),108),':','')+'.bak' 
  backup   database   htwb   to   disk=@htwb   with   init后面,但是显示“服务器检测到命令中有以下语法错误:
错误155:'h'不是可以识别的dateadd选项。
也就是在企业管理器里的作业中的步骤的命令中这样写:
declare   @htwb   varchar(100)   
  set   @htwb='e:\sjk\sj'+convert(char(8),getdate(),112)+replace(convert(char(6),getdate(),108),':','')+'.bak' 
  backup   database   htwb   to   disk=@htwb   with   init
 declare @sql varchar(8000)
set @sql ='e:\sjk\sj'+convert(char(8),dateadd(h,-6,getdate()),112)+replace(convert(char(6),dateadd(h,-6,getdate()),108),':','')+'.bak'

解决方案 »

  1.   

    declare   @htwb   varchar(100)   
      set   @htwb='e:\sjk\sj'+convert(char(8),getdate(),112)+replace(convert(char(6),getdate(),108),':','')+'.bak' 
      backup   database   htwb   to   disk=@htwb   with   init
    declare @sql varchar(8000)
    set @sql ='e:\sjk\sj'+convert(char(8),dateadd(hh,-6,getdate()),112)+replace(convert(char(6),dateadd(hh,-6,getdate()),108),':','')+'.bak'          
    exec xp_cmdshell 'del '+@sql
    放这个提示:错误170:第六行:' '附近有语法错误
      

  2.   

    exec xp_cmdshell 'del e:\sjk\sj'+convert(char(8),getdate(),112)+replace(convert(char(6),dateadd(hh,-6,getdate()),108),':','')+'.bak'先把xp_cmdshell  和‘del' 之间的空格去了
    再重新敲一个空格
      

  3.   

    declare @htwb varchar(100) 
    set @htwb='e:\sjk\sj'+convert(char(8),getdate(),112)+replace(convert(char(6),getdate(),108),':','')+'.bak' 
    backup database htwb to disk=@htwb with init
    declare @sql varchar(8000)
    set @sql ='del e:\sjk\sj'+convert(char(8),dateadd(hh,-6,getdate()),112)+replace(convert(char(6),dateadd(hh,-6,getdate()),108),':','')+'.bak' exec master..xp_cmdshell @sql
      

  4.   

    declare @htwb varchar(100) 
    set @htwb='e:\sjk\sj'+convert(char(8),getdate(),112)+replace(convert(char(6),getdate(),108),':','')+'.bak' 
    backup database htwb to disk=@htwb with init
    declare @sql varchar(8000)
    set @sql ='del e:\sjk\sj'+convert(char(8),dateadd(hh,-6,getdate()),112)+replace(convert(char(6),dateadd(hh,-6,getdate()),108),':','')+'.bak' exec master..xp_cmdshell @sql
      

  5.   

    exec xp_cmdshell 'del '+@sql-------------
    xp_cmdshell 后面的 空格有问题
    另外以个就是 xp_cmdshell 后面不支持 字符串的拼凑...
      

  6.   

    declare @sql1 varchar(100)
    declare @sql2 varchar(100)
    set @sql1 =  'e:\sjk\sj'+convert(char(8),getdate(),112)+replace(convert(char(6),getdate(),108),':','')+'.bak'
    set @sql2  = 'del e:\sjk\sj'+convert(char(8),getdate(),112)+replace(convert(char(6),dateadd(hh,-6,getdate()),108),':','')+'.bak'
    backup database  test to disk = @sql1  with init exec xp_cmdshell @sql2