create trigger tr_update
on ks_ks
from insert
as
begin
--SQL作业步
end
这样做可以吗?因为我想做的操作是,每新建一次考试设定了考试归档时间,然后调触发器,
触发器调SQL作业,到指定的归档时间后,SQL作业跟我做数据更改归档状态
这样可以吗?救命啊~~~~
6 个解决方案
#1
把作业的内容做成存储过程,作业和触发器都调用存储过程不好么?
#2
create trigger tr_update
on ks_ks
from insert
as
begin
exec msdb.dbo.sp_start_job @job_name
end
#3
不好,因为我要做的操作是,新建考试,调修改触发器,触发器调SQL作业,定时执行修改操作
救命啊,人家都说CSDN高手多,来个高手呀,呜
救命啊,人家都说CSDN高手多,来个高手呀,呜
#4
--楼主可以参考一下这个。
sp_start_job
指示 SQL Server 代理程序立即执行作业。
语法
sp_start_job [@job_name =] 'job_name' | [@job_id =] job_id
[,[@error_flag =] error_flag]
[,[@server_name =] 'server_name']
[,[@step_name =] 'step_name']
[,[@output_flag =] output_flag]
参数
[@job_name =] 'job_name'
是要启动的作业名。必须指定 job_id 或 job_name 两者之一,但不能同时指定两者。job_name 的数据类型为 sysname,默认设置为 NULL。
[@job_id =] job_id
是要启动的作业标识号。必须指定 job_id 或 job_name 两者之一,但不能同时指定两者。job_id 的数据类型为 uniqueidentifier,默认设置为 NULL。
[@error_flag =] error_flag
保留。
[@server_name =] 'server_name'
是要启动作业的目标服务器。server_name 的数据类型是 nvarchar(30),默认设置为 NULL。server_name 必须是作业当前的目标服务器之一。
[@step_name =] 'step_name'
是开始执行作业的步骤名。只适用于本地作业。step_name 的数据类型是 sysname,默认设置为 NULL。
[@output_flag =] output_flag
保留。
返回代码值
0(成功)或 1(失败)
结果集
无
权限
执行权限默认授予 msdb 数据库中的 public 角色。可执行此存储过程而且是 sysadmin 固定角色成员的用户可以启动任何作业。不是 sysadmin 角色成员的用户使用 sp_start_job 只能启动他/她所拥有的作业。
当 sysadmin 固定服务器角色成员的用户唤醒调用 sp_start_job 时,sp_start_job 将在 SQL Server 服务正在其中运行的安全上下文中执行。当用户不是 sysadmin 固定服务器角色的成员时,sp_start_job 将模拟 SQL Server 代理代理帐户,而该帐户是通过 xp_sqlagent_proxy_account 指定的。如果代理帐户不可用,则 sp_start_job 将失败。只有 Microsoft® Windows NT® 4.0 和 Windows 2000 有上述情况。在 Windows 9.x 上没有模拟,而且 sp_start_job 总是在启动 SQL Server 的 Windows 9.x 用户的安全上下文中执行。
示例
下例启动名为 Nightly Backup 的作业。
USE msdb
EXEC sp_start_job @job_name = 'Nightly Backup'
sp_start_job
指示 SQL Server 代理程序立即执行作业。
语法
sp_start_job [@job_name =] 'job_name' | [@job_id =] job_id
[,[@error_flag =] error_flag]
[,[@server_name =] 'server_name']
[,[@step_name =] 'step_name']
[,[@output_flag =] output_flag]
参数
[@job_name =] 'job_name'
是要启动的作业名。必须指定 job_id 或 job_name 两者之一,但不能同时指定两者。job_name 的数据类型为 sysname,默认设置为 NULL。
[@job_id =] job_id
是要启动的作业标识号。必须指定 job_id 或 job_name 两者之一,但不能同时指定两者。job_id 的数据类型为 uniqueidentifier,默认设置为 NULL。
[@error_flag =] error_flag
保留。
[@server_name =] 'server_name'
是要启动作业的目标服务器。server_name 的数据类型是 nvarchar(30),默认设置为 NULL。server_name 必须是作业当前的目标服务器之一。
[@step_name =] 'step_name'
是开始执行作业的步骤名。只适用于本地作业。step_name 的数据类型是 sysname,默认设置为 NULL。
[@output_flag =] output_flag
保留。
返回代码值
0(成功)或 1(失败)
结果集
无
权限
执行权限默认授予 msdb 数据库中的 public 角色。可执行此存储过程而且是 sysadmin 固定角色成员的用户可以启动任何作业。不是 sysadmin 角色成员的用户使用 sp_start_job 只能启动他/她所拥有的作业。
当 sysadmin 固定服务器角色成员的用户唤醒调用 sp_start_job 时,sp_start_job 将在 SQL Server 服务正在其中运行的安全上下文中执行。当用户不是 sysadmin 固定服务器角色的成员时,sp_start_job 将模拟 SQL Server 代理代理帐户,而该帐户是通过 xp_sqlagent_proxy_account 指定的。如果代理帐户不可用,则 sp_start_job 将失败。只有 Microsoft® Windows NT® 4.0 和 Windows 2000 有上述情况。在 Windows 9.x 上没有模拟,而且 sp_start_job 总是在启动 SQL Server 的 Windows 9.x 用户的安全上下文中执行。
示例
下例启动名为 Nightly Backup 的作业。
USE msdb
EXEC sp_start_job @job_name = 'Nightly Backup'
#5
试试2楼的。
#6
关注.
#1
把作业的内容做成存储过程,作业和触发器都调用存储过程不好么?
#2
create trigger tr_update
on ks_ks
from insert
as
begin
exec msdb.dbo.sp_start_job @job_name
end
#3
不好,因为我要做的操作是,新建考试,调修改触发器,触发器调SQL作业,定时执行修改操作
救命啊,人家都说CSDN高手多,来个高手呀,呜
救命啊,人家都说CSDN高手多,来个高手呀,呜
#4
--楼主可以参考一下这个。
sp_start_job
指示 SQL Server 代理程序立即执行作业。
语法
sp_start_job [@job_name =] 'job_name' | [@job_id =] job_id
[,[@error_flag =] error_flag]
[,[@server_name =] 'server_name']
[,[@step_name =] 'step_name']
[,[@output_flag =] output_flag]
参数
[@job_name =] 'job_name'
是要启动的作业名。必须指定 job_id 或 job_name 两者之一,但不能同时指定两者。job_name 的数据类型为 sysname,默认设置为 NULL。
[@job_id =] job_id
是要启动的作业标识号。必须指定 job_id 或 job_name 两者之一,但不能同时指定两者。job_id 的数据类型为 uniqueidentifier,默认设置为 NULL。
[@error_flag =] error_flag
保留。
[@server_name =] 'server_name'
是要启动作业的目标服务器。server_name 的数据类型是 nvarchar(30),默认设置为 NULL。server_name 必须是作业当前的目标服务器之一。
[@step_name =] 'step_name'
是开始执行作业的步骤名。只适用于本地作业。step_name 的数据类型是 sysname,默认设置为 NULL。
[@output_flag =] output_flag
保留。
返回代码值
0(成功)或 1(失败)
结果集
无
权限
执行权限默认授予 msdb 数据库中的 public 角色。可执行此存储过程而且是 sysadmin 固定角色成员的用户可以启动任何作业。不是 sysadmin 角色成员的用户使用 sp_start_job 只能启动他/她所拥有的作业。
当 sysadmin 固定服务器角色成员的用户唤醒调用 sp_start_job 时,sp_start_job 将在 SQL Server 服务正在其中运行的安全上下文中执行。当用户不是 sysadmin 固定服务器角色的成员时,sp_start_job 将模拟 SQL Server 代理代理帐户,而该帐户是通过 xp_sqlagent_proxy_account 指定的。如果代理帐户不可用,则 sp_start_job 将失败。只有 Microsoft® Windows NT® 4.0 和 Windows 2000 有上述情况。在 Windows 9.x 上没有模拟,而且 sp_start_job 总是在启动 SQL Server 的 Windows 9.x 用户的安全上下文中执行。
示例
下例启动名为 Nightly Backup 的作业。
USE msdb
EXEC sp_start_job @job_name = 'Nightly Backup'
sp_start_job
指示 SQL Server 代理程序立即执行作业。
语法
sp_start_job [@job_name =] 'job_name' | [@job_id =] job_id
[,[@error_flag =] error_flag]
[,[@server_name =] 'server_name']
[,[@step_name =] 'step_name']
[,[@output_flag =] output_flag]
参数
[@job_name =] 'job_name'
是要启动的作业名。必须指定 job_id 或 job_name 两者之一,但不能同时指定两者。job_name 的数据类型为 sysname,默认设置为 NULL。
[@job_id =] job_id
是要启动的作业标识号。必须指定 job_id 或 job_name 两者之一,但不能同时指定两者。job_id 的数据类型为 uniqueidentifier,默认设置为 NULL。
[@error_flag =] error_flag
保留。
[@server_name =] 'server_name'
是要启动作业的目标服务器。server_name 的数据类型是 nvarchar(30),默认设置为 NULL。server_name 必须是作业当前的目标服务器之一。
[@step_name =] 'step_name'
是开始执行作业的步骤名。只适用于本地作业。step_name 的数据类型是 sysname,默认设置为 NULL。
[@output_flag =] output_flag
保留。
返回代码值
0(成功)或 1(失败)
结果集
无
权限
执行权限默认授予 msdb 数据库中的 public 角色。可执行此存储过程而且是 sysadmin 固定角色成员的用户可以启动任何作业。不是 sysadmin 角色成员的用户使用 sp_start_job 只能启动他/她所拥有的作业。
当 sysadmin 固定服务器角色成员的用户唤醒调用 sp_start_job 时,sp_start_job 将在 SQL Server 服务正在其中运行的安全上下文中执行。当用户不是 sysadmin 固定服务器角色的成员时,sp_start_job 将模拟 SQL Server 代理代理帐户,而该帐户是通过 xp_sqlagent_proxy_account 指定的。如果代理帐户不可用,则 sp_start_job 将失败。只有 Microsoft® Windows NT® 4.0 和 Windows 2000 有上述情况。在 Windows 9.x 上没有模拟,而且 sp_start_job 总是在启动 SQL Server 的 Windows 9.x 用户的安全上下文中执行。
示例
下例启动名为 Nightly Backup 的作业。
USE msdb
EXEC sp_start_job @job_name = 'Nightly Backup'
#5
试试2楼的。
#6
关注.