您的位置:首页 > 数据库

job owner的权限和sql agent start account权限在job调用和job执行的各个阶段起什么作用?

2010-11-10 11:03 295 查看
1.job owner应该设成谁?
2.sql agent account应该设成谁?
3.共享文件夹的帐户应该开放给谁?
4.什么时候会用到sql agent account的权限?
5.什么时候会用到job owner的权限?

当job step是T-SQL step,如果job owner在本地sysadmin固定服务器角色中, step将会在Sql Server Agent service的账户下运行.否则将以job owner身份执行,不论谁启动的这个job.

当job step是CmdExec or ActiveXScript job step,如果 job owner在本地sysadmin固定服务器角色中, step将会在Sql Server Agent service的账户下运行.否则 step 将会在Proxy Account下运行,如果proxy account没有配置,step将失败(Agent 属性中的job system 标签页配置)。当然,如果proxy account配为没有访问网络上其他机器权限的用户也将失败。

当你通过job执行DTS时,job step是CmdExec step.假设你Job owner是sa,那就需要把 Agent service的账户设为可以访问网络其他机器的windows用户;如果你Job owner不是属于sysadmin角色,那需要把proxy account配为有访问网络上其他机器权限的用户。

-----------------------------------------------------------------------------------

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_update_jobschedule
更改指定作业的调度设置。

语法
sp_update_jobschedule [@job_id =] job_id, | [@job_name =] 'job_name ',
[@name =] 'name '
[, [@new_name =] 'new_name ']
[, [@enabled =] enabled]
[, [@freq_type =] freq_type]
[, [@freq_interval =] freq_interval]
[, [@freq_subday_type =] freq_subday_type]
[, [@freq_subday_interval =] freq_subday_interval]
[, [@freq_relative_interval =] freq_relative_interval]
[, [@freq_recurrence_factor =] freq_recurrence_factor]
[, [@active_start_date =] active_start_date]
[, [@active_end_date =] active_end_date]
[, [@active_start_time =] active_start_time]
[, [@active_end_time =] active_end_time]

参数
[@job_id =] job_id

是调度所属于的作业的标识号。job_id 的数据类型为 uniqueidentifier,其默认值为 NULL。

[@job_name =] 'job_name '

是调度所属于的作业的名称。各作业名称都必须是唯一的。job_name 的数据类型为 sysname,其默认值为 NULL。

说明 必须或者指定 job_id 或者指定 job_name,但不能两个都指定。

[@name =] 'name '

是要修改的调度的名称。name 的数据类型为 sysname,无默认值。

[@new_name =] 'new_name '

是调度的新名称。new_name 的数据类型为 sysname,其默认值为 NULL。

[@enabled =] enabled

指定启用 (1) 或不启用 (0) 调度。enabled 的数据类型为 tinyint,其默认值为 NULL。

[@freq_type =] freq_type

指定该作业运行的频繁程度。freq_type 的数据类型为 int,其默认值为 NULL,且可以取下列值之一。

值 描述
1 一次。
4 按天。
8 按星期。
16 按月。
32 按月,相对于 freq_interval。
64 当 SQL Server代理启动时运行。
128 当计算机空闲时运行。

[@freq_interval =] freq_interval

指定作业在哪一天运行。freq_interval 的数据类型为 int,其默认值为 NULL。freq_interval 的值取决于 freq_type 的值。

freq_type 的值 对 freq_interval 的影响
1(一次) 未使用 freq_interval。
4(每天) 每个 freq_interval 日。
8(每周) freq_interval 是下列某个值或多个值(或 (OR) 在一起):
1 = 星期日
2 = 星期一
4 = 星期二
8 = 星期三
16 = 星期四
32 = 星期五
64 = 星期六

16(每月) 每月的 freq_interval 日。
32(每月相对信息) freq_interval 可以取下列值之一:
1 = 星期日
2 = 星期一
3 = 星期二
4 = 星期三
5 = 星期四
6 = 星期五
7 = 星期六
8 = 日
9 = 工作日
10 = 周末

64(SQL Server 代理程序启动时) 未使用 freq_interval。

[@freq_subday_type =] freq_subday_type

指定 freq_subday_interval 的单位。freq_subday_type 的数据类型为 int,其默认值为 NULL,且可以取下列值之一。

值 描述(单位)
0x1 在指定的时间。
0x4 分钟。
0x8 小时。

[@freq_subday_interval =] freq_subday_interval

指定作业每次执行之间的周期数,周期以 freq_subday_type 为单位。freq_subday_interval 的数据类型为 int,其默认值为 NULL。

[@freq_relative_interval =] freq_relative_interval

当 freq_interval 的值为 32(每月相对信息)时,指定每月调度作业发生的 freq_interval。freq_relative_interval 的数据类型为 int,其默认值为 NULL,且可以取下列值之一。

值 描述(单位)
1 第一个
2 第二个
4 第三个
8 第四个
16 最后一个

[@freq_recurrence_factor =] freq_recurrence_factor

指定作业各次调度执行之间的月数。freq_recurrence_factor 仅当 freq_type 为 8、16 或 32 时才使用。freq_recurrence_factor 的数据类型为 int,其默认值为 NULL。

[@active_start_date =] active_start_date

是作业可以开始执行的日期。active_start_date 的数据类型为 int,其默认值为 NULL。其值必须为 YYYYMMDD 格式。如果 active_start_date 不为 NULL,则日期必须大于或等于 19900101。

[@active_end_date =] active_end_date

是作业可以停止执行的日期。active_end_date 的数据类型为 int,其默认值为 NULL。其值必须为 YYYYMMDD 格式。

[@active_start_time =] active_start_time

是在 active_start_date 与 active_end_date 之间任何一天作业开始执行的时间。active_start_time 的数据类型为 int,其默认值为 NULL。其值必须以 HHMMSS 的格式输入。

[@active_end_time =] active_end_time

是在 active_start_date 与 active_end_date 之间任何一天作业停止执行的时间。active_end_time 的数据类型为 int,其默认值为 NULL。其值必须以 HHMMSS 的格式输入。

返回代码值
0(成功)或 1(失败)

注释
sp_update_jobschedule 必须从 msdb 数据库中运行。

更新作业调度将增加作业的版本号。

权限
执行权限默认授予 public 角色。

示例
下例禁用 Archive Tables 作业的 Monday Archive 调度,并更改该调度的名称。

USE msdb
EXEC sp_update_jobschedule @job_name = 'Archive Tables ',
@name = 'Monday Archive ',
@new_name = 'Monday Archive - DEACTIVATED ',
@enabled = 0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: