日期:2014-05-18  浏览次数:20490 次

如何在数据库中实现定时插入数据
我想定时在数据库的一张表中查寻纪录,并将符合地记录插入另一张表中,请问该怎么做?

------解决方案--------------------
企业管理器
--管理
--SQL Server代理
--右键作业
--新建作业
-- "常规 "项中输入作业名称
-- "步骤 "项
--新建
-- "步骤名 "中输入步骤名
-- "类型 "中选择 "Transact-SQL 脚本(TSQL) "
-- "数据库 "选择执行命令的数据库
-- "命令 "中输入要执行的语句:
insert into 表2(...) select ... from 表1 where ...

--确定
-- "调度 "项
--新建调度
-- "名称 "中输入调度名称
-- "调度类型 "中选择你的作业执行安排
--如果选择 "反复出现 "
--点 "更改 "来设置你的时间安排


然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行

设置方法:
我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择 "自动启动 "--确定.


------解决方案--------------------
if exists (select * from dbo.sysobjects where id = object_id(N '[dbo].[p_createjob] ') and OBJECTPROPERTY(id, N 'IsProcedure ') = 1)
drop procedure [dbo].[p_createjob]
GO
create proc p_createjob
@jobname varchar(100),
@sql varchar(8000),
@serverName sysname= ' ',
@dbname sysname= ' ',
@freqtype varchar(6)= 'day ',
@fsinterval int=1,
@time int=170000
as
if isnull(@dbname, ' ')= ' ' set @dbname=db_name()
exec msdb..sp_add_job @job_name=@jobname
exec msdb..sp_add_jobstep @job_name=@jobname,
@step_name = 'name,
@subsystem = 'sql ',
@database_name=@dbname,
@command = @sql,
@retry_attempts = 10,
@retry_interval = 10
declare @ftype int,@fstype int,@ffactor int
select @ftype=case @freqtype when 'day ' then 4
when 'week ' then 8
when 'month ' then 16 end
,@fstype=case @fsinterval when 1 then 0 else 8 end
if @fsinterval <> 1 set @time=0
set @ffactor=case @freqtype when 'day ' then 0 else 1 end

EXEC msdb..sp_add_jobschedule @job_name=@jobname,
@name = 'name2,
@freq_type=@ftype , @freq_interval=1, @freq_subday_type=@fstype, @freq_subday_interval=@fsinterval, @freq_recurrence_factor=@ffactor,
@active_start_time=@time
if @servername= ' '
set @servername=@@servername
EXEC msdb..sp_add_jobserver @job_name = @jobname,
@server_name = @servername
go
exec p_createjob @jobname= 'dd '
,@sql= 'insert into table2(...) select ... from 表1 where ... '
,@servername= 'jobname
,@dbname= 'databasename '
,@freqtype= 'day '
,@time= '000000 '

写在查询分析器里啊!