如果数据量比较大的话,无论用什么方法,每隔10秒处理一次都会对sql造成比较大的影响.

解决方案 »

  1.   


    --在SQL中操纵读取ACCESS数据库
    SELECT *
    FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
       'c:\test.mdb';'admin';''
    ,[表名])SELECT * 
    FROM opendatasource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\test.mdb";Jet OLEDB:Database Password=数据库密码')...[表名]/*--说明:
    c:\test.mdb 是你要操作的ACCESS数据库名,如果不在SQL服务器上,需要设置文件所在的目录为完全共享,并将目录改为网络目录
    表名 是你要操作和ACCESS数据库中的表名
    数据库密码 如果你的ACCESS数据库有密码,就要用第二种方式
    其他部分不需要做任何变动如果是导入数据到现有表,对应的在: SELECT *
    前加上: INSERT INTO 表
    语句如果是导入数据并生成新表,对应的在: SELECT *
    后加上: INTO 表
    语句
    --*/
      

  2.   

    --sql的作业最小时间间隔为1分钟,所以你要在sql的作业中每10秒处理一次数据的话,可以使用类似下面的存储过程
    create proc p_process
    as
    declare @dt datetime
    set @dt=dateadd(minute,1,getdate())
    while @dt>getdate()
    begin
    --处理ACCESS 数据
    SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','c:\test.mdb';'admin';'',[表名]) --处理完成后延时10秒
    waitfor delay '00:00:10'
    end
    go
      

  3.   

    --然后创建一个每分钟执行一次的作业调用上面的存储过程
    企业管理器
    --管理
    --SQL Server代理
    --右键作业
    --新建作业
    --"常规"项中输入作业名称
    --"步骤"项
    --新建
    --"步骤名"中输入步骤名
    --"类型"中选择"Transact-SQL 脚本(TSQL)"
    --"数据库"选择执行命令的数据库
    --"命令"中输入要执行的语句
    exec p_process
    --确定
    --"调度"项
    --新建调度
    --"名称"中输入调度名称
    --"调度类型"中选择你的作业执行安排
    --如果选择"反复出现"
    --点"更改"来设置你的时间安排
    然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行设置方法:
    我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.
      

  4.   

    zjcxc(邹建):
      谢谢;)
      如果我自己写个程序读取ACCESS数据,然后插入到SQLServer相应的表中呢?
      

  5.   

    那是一样的,只不过你把读数据的负担放到你的程序中而已,插入数据的一系列处理仍然由sql完成,如果你的程序写得不太好的话,可能比直接在sql处理对sql的影响更大.