返回的信息是什么? 确认D:\data\newdata.sql在你的sql服务器上,而且你的用户有足够的权限,而且脚本文件的内容是正确的.

解决方案 »

  1.   

    create proc execsql
    @server varchar(20),
    @user   varchar(20),
    @pwd    varchar(20),
    @db     varchar(20),
    @path   varchar(120)
    as
    declare @sql varchar(500)
    set @sql='master..xp_cmdshell 
    '''osql -S '+@server+' -U '+@user+' -P '+pwd+' -d '+@db+' -i '+@path+'''''exec(@sql)
      

  2.   

    没有返回...
    就象执行正确一样...这个SQL脚本是用来建表和索引,触发器用的...在查询分析器里完全正确...楼上大侠的可以用吗?谢谢了...还在测试中...
      

  3.   

    D:\data\newdata.sql 好像时要在你的webserver上,是吧?检查一下.
      

  4.   

    newdata.sql文件是在我的wbserver上面的...这点不会有问题...
    现在只好在查询分析器里执行,执行也没有问题...
      

  5.   

    换台电脑去测试,如果没有问题,那就检查你的服务器.也可以换个简单的脚本文件来测试.为了避免脚本文件的影响,可以先测试直接执行sql语句的效果.
    EXEC master..xp_cmdshell 'osql -S wbserver -U admin -P x819hp24 -d wb -Q"create table tempdb.dbo.tb(id int)"'
      

  6.   

    显示错误:
    实时错误'3709':
    请求的操作需要OLE DB会话对象,而当前提供程序不支持此对象。
      

  7.   

    哦...刚才的错误已消除...
    但还是没有创建表...
    create table tempdb.dbo.tb(id int)
      

  8.   

    zjcxc(邹建) 大侠的简单测试已成功...
    是否说明我原来的:
    EXEC master..xp_cmdshell 'osql -S wbserver -U admin -P x819hp24 -d wb -i D:\data\newdata.sql' 也没有问题呢? 
      

  9.   

    测试成功了,那就再试:exec master..xp_cmdshell 'echo create table tempdb.dbo.tb(id int) >c:\a.sql'
    exec master..xp_cmdshell 'osql -S wbserver -U admin -P x819hp24 -d wb -i c:\a.sql'如果还是成功了,那么说明是你的脚本文件的问题. 如果不成功,给出错误信息.
      

  10.   

    还是成功...
    如果说SQL脚本有问题,那么怎么会可以在查询分析器上执行成功呢?我给出我的SQL脚本:
    ---------------------------------创建明细---------------
    declare @日期参数 datetime,@new_table nvarchar(20)
     set @日期参数 = getdate()
     set @new_table='考勤明细资料'+SUBSTRING(CONVERT(CHAR,@日期参数,112),1,4) + SUBSTRING(CONVERT(CHAR,@日期参数,112),5,2) 
    IF (Select count(*) from sysobjects where name=  @new_table and type='u') = 0
      begin
         exec('CREATE TABLE '+ @new_table + '(
    [电脑工号] [int] NOT NULL ,
    [日期] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [星期] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [上午上班时间] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [上午下班时间] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [下午上班时间] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [下午下班时间] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [晚上上班时间] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [晚上下班时间] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间1] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间2] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间3] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间4] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间5] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间6] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间7] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间8] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间9] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间10] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间11] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间12] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间13] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间14] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间15] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间16] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间17] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间18] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间19] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间20] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间21] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间22] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间23] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间24] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间25] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间26] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间27] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间28] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间29] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常打卡时间30] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [异常状态] [int] NULL ,
    [考勤生效] [int] NULL ,
    [生效人] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
    [生效时间] [datetime] NULL 
    ) ON [PRIMARY]')
    end
    GO
    declare @日期参数 datetime,@new_table nvarchar(20),@pktable nvarchar(20)
     set @日期参数 = getdate()
     set @new_table='考勤明细资料'+SUBSTRING(CONVERT(CHAR,@日期参数,112),1,4) + SUBSTRING(CONVERT(CHAR,@日期参数,112),5,2) 
     set @pktable= 'PK_考勤明细资料'+SUBSTRING(CONVERT(CHAR,@日期参数,112),1,4) + SUBSTRING(CONVERT(CHAR,@日期参数,112),5,2) 
    exec('ALTER TABLE '+ @new_table +' WITH NOCHECK ADD 
    CONSTRAINT '+ @pktable +' PRIMARY KEY  CLUSTERED 
    (
    [电脑工号],
    [日期]
    )  ON [PRIMARY] ')
    GO
    declare @日期参数 datetime,@new_table nvarchar(20),@pktable nvarchar(20)
     set @日期参数 = getdate()
     set @new_table='考勤明细资料'+SUBSTRING(CONVERT(CHAR,@日期参数,112),1,4) + SUBSTRING(CONVERT(CHAR,@日期参数,112),5,2) 
    exec('CREATE  UNIQUE  INDEX [考勤明细资料索引] ON '+ @new_table +'([电脑工号], [日期]) ON [PRIMARY]')
    Go
    ----------------------------------------创建工时---------------------
    declare @日期参数 datetime
     set @日期参数 = getdate()
      declare  @new_table  nvarchar(20)
      set @new_table='工时资料'+SUBSTRING(CONVERT(CHAR,@日期参数,112),1,4) + SUBSTRING(CONVERT(CHAR,@日期参数,112),5,2) 
    IF (Select count(*) from sysobjects where name=  @new_table and type='u') = 0
      begin
         exec('   CREATE TABLE ' + @new_table + ' (
    [工时电脑工号] [int] NOT NULL ,
    [工时日期] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [星期] [int] NULL ,
    [工时] [int] NULL ,
    [加班] [int] NULL ,
    [补时] [int] NULL ,
    [补加班] [int] NULL ,
    [迟到] [int] NULL ,
    [迟到时间] [int] NULL ,
    [早退] [int] NULL ,
    [早退时间] [int] NULL ,
    [加班迟到] [int] NULL ,
    [加班迟到时间] [int] NULL ,
    [休假] [int] NULL ,
    [休假时间] [int] NULL ,
    [补假] [int] NULL ,
    [补假时间] [int] NULL ,
    [请假] [int] NULL ,
    [请假时间] [int] NULL ,
    [旷工] [int] NULL ,
    [旷工时间] [int] NULL ,
    [备注] [char] (64) COLLATE Chinese_PRC_CI_AS NULL ,
    [工时生效] [int] NULL ,
    [生效人] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
    [生效时间] [datetime] NULL 
    ) ON [PRIMARY]')
      end
    Go
      

  11.   

    -------接上
    declare @日期参数 datetime
     set @日期参数 =getdate()
        declare  @new_table  nvarchar(20)
        declare  @PK_table nvarchar(20)
        set @new_table='工时资料'+SUBSTRING(CONVERT(CHAR,@日期参数,112),1,4) + SUBSTRING(CONVERT(CHAR,@日期参数,112),5,2) 
      set  @PK_table='PK_工时资料'+SUBSTRING(CONVERT(CHAR,@日期参数,112),1,4) + SUBSTRING(CONVERT(CHAR,@日期参数,112),5,2) 
     exec(' 
    ALTER TABLE '+ @new_table + ' WITH NOCHECK ADD 
    CONSTRAINT ' + @PK_table +' PRIMARY KEY  CLUSTERED 
    (
    [工时电脑工号],
    [工时日期]
    )  ON [PRIMARY] ')
    GO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO
      declare @日期参数 datetime
     set @日期参数 = getdate()
      declare  @update_table nvarchar(20)
      declare  @new_table  nvarchar(20)
      declare  @All_table   nvarchar(20) 
      set @update_table='添年工时资料'+SUBSTRING(CONVERT(CHAR,@日期参数,112),1,4) + SUBSTRING(CONVERT(CHAR,@日期参数,112),5,2) 
       set @new_table='工时资料'+SUBSTRING(CONVERT(CHAR,@日期参数,112),1,4) + SUBSTRING(CONVERT(CHAR,@日期参数,112),5,2) 
        set @All_table='年工时资料'+SUBSTRING(CONVERT(CHAR,@日期参数,112),1,4)
    if not exists (select * from dbo.sysobjects where id = object_id(N''+@update_table+'') 
    and OBJECTPROPERTY(id, N'IsTrigger') = 1)
      begin
    exec(' CREATE TRIGGER ' + @update_table + '  
         ON  ' + @new_table + '     
         FOR INSERT
         AS
    IF EXISTS(SELECT * FROM '+ @All_table +'   INNER JOIN  INSERTED 
    ON '+ @All_table +'.月工时电脑工号 = INSERTED.工时电脑工号 
    AND LTRIM(RTRIM('+ @All_table +'.月工时日期)) = 
    SUBSTRING(RTRIM(LTRIM(INSERTED.工时日期)),1,6))
         BEGIN
     UPDATE  '+ @All_table +'      
             SET 月工时 = 月工时 + INSERTED.工时,月加班 = 月加班 + INSERTED.加班,月补时 = 月补时 + INSERTED.补时,
              月补加班 = 月补加班 + INSERTED.补加班,月迟到 = 月迟到 +INSERTED.迟到,
             月迟到时间 = 月迟到时间 + INSERTED.迟到时间,月早退 = 月早退 +INSERTED.早退,月早退时间 = 月早退时间 + INSERTED.早退时间,
     月加班迟到 = 月加班迟到 + INSERTED.加班迟到,月加班迟到时间 = 月加班迟到时间 + INSERTED.加班迟到时间, 
             月休假=月休假 + inserted.休假 , 月休假时间 = 月休假时间 + inserted.休假时间, 
             月补假=月补假 + inserted.补假 , 月补假时间 = 月补假时间 + inserted.补假时间,月请假 = 月请假 + inserted.请假, 
             月请假时间 = 月请假时间 + inserted.请假时间, 月旷工 = 月旷工 + inserted.旷工, 月旷工时间= inserted.旷工时间 
             FROM '+ @All_table +'  INNER JOIN  INSERTED ON '+ @All_table +'.月工时电脑工号 = INSERTED.工时电脑工号 
            AND LTRIM(RTRIM('+ @All_table +'.月工时日期)) LIKE SUBSTRING(RTRIM(LTRIM(INSERTED.工时日期)),1,6)
        END
    ELSE
        BEGIN
    INSERT '+ @All_table +'(月工时电脑工号,月工时日期, 月工时, 月加班, 月补时,月补加班,  月迟到, 月迟到时间, 月早退, 月早退时间, 
            月加班迟到, 月加班迟到时间, 月休假,月休假时间, 月补假, 月补假时间,  
             月请假, 月请假时间, 月旷工,月旷工时间, 备注,月底薪, 月工时工资, 月计件工资, 月加班工资,  
             月加班补贴,月假日补贴,月请假扣,月旷工扣,月迟到扣,月应增工资, 月应扣工资, 月勤工奖, 月伙食费, 月综合费,
            月应发合计,计薪天数,假日天数,补星期假,补特殊假)
    SELECT 工时电脑工号,SUBSTRING(RTRIM(LTRIM(工时日期)),1,6),  工时, 加班, 补时,补加班,  迟到, 迟到时间, 早退, 早退时间, 
            加班迟到, 加班迟到时间, 0,0,0,0,请假,请假时间,旷工,旷工时间,备注,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
    FROM INSERTED
       END')
            declare @datename nvarchar(6)
    set @datename=SUBSTRING(CONVERT(CHAR,@日期参数,112),1,4) + SUBSTRING(CONVERT(CHAR,@日期参数,112),5,2) 
    insert newtable select @datename
    end 
    GO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO
      

  12.   

    谢谢  zjcxc(邹建)  大侠指点,
    检查脚本中……