**请教一个关于SQL 作业的问题** 服务器要换硬盘!想把SQL上的作业备份下来,我先把作业导成了SQL脚本!但不知道,怎么把脚本导回成作业呢?请高人指点! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 运行你导出来的sql脚本就可以了 通过代码创建作业的步骤: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]GOcreate proc p_createjob@jobname varchar(100), --作业名称@sql varchar(8000), --要执行的命令@serverName sysname='', --job server名@dbname sysname='', --默认为当前的数据库名@freqtype varchar(6)='day', --时间周期,month 月,week 周,day 日@fsinterval int=1, --相对于每日的重复次数@time int=170000 --开始执行时间,对于重复执行的作业,将从0点到23:59分asif isnull(@dbname,'')='' set @dbname=db_name()--创建作业exec msdb..sp_add_job @job_name=@jobname--创建作业步骤exec msdb..sp_add_jobstep @job_name=@jobname, @step_name = '数据处理', @subsystem = 'TSQL', @database_name=@dbname, @command = @sql, @retry_attempts = 5, --重试次数 @retry_interval = 5 --重试间隔--创建调度declare @ftype int,@fstype int,@ffactor intselect @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 endif @fsinterval<>1 set @time=0set @ffactor=case @freqtype when 'day' then 0 else 1 endEXEC msdb..sp_add_jobschedule @job_name=@jobname, @name = '时间安排', @freq_type=@ftype , --每天,8 每周,16 每月 @freq_interval=1, --重复执行次数 @freq_subday_type=@fstype, --是否重复执行 @freq_subday_interval=@fsinterval, --重复周期 @freq_recurrence_factor=@ffactor, @active_start_time=@time --下午17:00:00分执行if @servername=''set @servername=@@servernameEXEC msdb..sp_add_jobserver @job_name = @jobname, @server_name = @servernamego --调用--每天执行的作业exec p_createjob @jobname='dd' ,@sql='insert into 表2(...) select ... from 表1 where ...' ,@servername='job服务器名' ,@dbname='数据库名' ,@freqtype='day' ,@time='000000' 用存储过程创建作业?但我的脚本里很多是VBS脚本! 你把作业导出来之后的SQL脚本在新SQL服务器的查询分析器里跑一下就OK了。 --创建作业步骤 里的:@subsystem = 'TSQL'TSQL的脚本如何赋值,难道是设置一个TSQL脚本的路径吗?还是里面放置所有脚本代码? 我在查询分析器里试了,但出现这个错误:服务器: 消息 515,级别 16,状态 2,过程 sp_add_job,行 105无法将 NULL 值插入列 'owner_sid',表 'msdb.dbo.sysjobs';该列不允许空值。INSERT 失败。语句已终止。 decimal类型的数据做加法应该怎么写? 请问这句SQL语句怎么写 SQL 2005 sp_prepexec 这个存储过程是干嘛的! sql如何查询指定的记录 SQL SERVER里无故的丢数据是怎么回事? 触发器问题 一个排序问题,急急急,拿分容易。 请问在sql server中编辑表记录(打开表、返回所有行)时显示“内部错误,构造不完整”是什么原因? 求救!!哪儿有基于值的数据库查询优化的资料!!急!!!!!!1 SQL Server 如何将带格式的编辑文本保存到sql server2005数据库中 sql server 2005:附加数据库后,使用sa不能操作该数据库?
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]
GOcreate proc p_createjob
@jobname varchar(100), --作业名称
@sql varchar(8000), --要执行的命令
@serverName sysname='', --job server名
@dbname sysname='', --默认为当前的数据库名
@freqtype varchar(6)='day', --时间周期,month 月,week 周,day 日
@fsinterval int=1, --相对于每日的重复次数
@time int=170000 --开始执行时间,对于重复执行的作业,将从0点到23:59分
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 = '数据处理',
@subsystem = 'TSQL',
@database_name=@dbname,
@command = @sql,
@retry_attempts = 5, --重试次数
@retry_interval = 5 --重试间隔--创建调度
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 endEXEC msdb..sp_add_jobschedule @job_name=@jobname,
@name = '时间安排',
@freq_type=@ftype , --每天,8 每周,16 每月
@freq_interval=1, --重复执行次数
@freq_subday_type=@fstype, --是否重复执行
@freq_subday_interval=@fsinterval, --重复周期
@freq_recurrence_factor=@ffactor,
@active_start_time=@time --下午17:00:00分执行if @servername=''
set @servername=@@servername
EXEC msdb..sp_add_jobserver @job_name = @jobname,
@server_name = @servernamego --调用
--每天执行的作业
exec p_createjob @jobname='dd'
,@sql='insert into 表2(...) select ... from 表1 where ...'
,@servername='job服务器名'
,@dbname='数据库名'
,@freqtype='day'
,@time='000000'
里的:
@subsystem = 'TSQL'TSQL的脚本如何赋值,难道是设置一个TSQL脚本的路径吗?
还是里面放置所有脚本代码?
无法将 NULL 值插入列 'owner_sid',表 'msdb.dbo.sysjobs';该列不允许空值。INSERT 失败。
语句已终止。