如何在quartz的job任务中 *** 作数据库

如何在quartz的job任务中 *** 作数据库,第1张

数据库中建表。建表模版在Quartz包下docs/dbTables下,选择相应的数据库和版本即可。ORACLE的11个Table列表如下:

QRTZ_JOB_LISTENERS:存储有关已配置的 JobListener 的信息

JOB_NAME

JOB_GROUP

JOB_LISTENER

QRTZ_TRIGGER_LISTENERS:存储已配置的 TriggerListener 的信息

QRTZ_FIRED_TRIGGERS:存储与已触发的 Trigger 相关的状态信息,以及相联 Job的执行信息

QRTZ_PAUSED_TRIGGER_GRPS:存储已暂停的 Trigger 组的信息

QRTZ_SCHEDULER_STATE:存储集群中note实例信息,quartz会定时读取该表的信息判断集群中每个实例的当前状态

INSTANCE_NAME 之前配置文件中orgquartzschedulerinstanceId配置的名字,就会写入该字段,如果设置为AUTO,quartz会根据物理机名和当前时间产生一个名字

LAST_CHECKIN_TIME:上次检查时间

CHECKIN_INTERVAL :检查间隔时间

QRTZ_LOCKS:存储程序的悲观锁的信息(假如使用了悲观锁)

QRTZ_SIMPLE_TRIGGERS:存储简单的Trigger,包括重复次数,间隔,以及已触的次数

TRIGGER_NAME :qrtz_triggers表trigger_name的外键

TRIGGER_GROUP:qrtz_triggers表trigger_group的外键

REPEAT_COUNT :重复次数

REPEAT_INTERVAL:时间间隔

TIMES_TRIGGERED:触发次数

QRTZ_CRON_TRIGGERS:存储cron表达式表

TRIGGER_NAME :qrtz_triggers表trigger_name的外键

TRIGGER_GROUP:qrtz_triggers表trigger_group的外键

CRON_EXPRESSION:cron表达式

TIME_ZONE_ID :时区

QRTZ_TRIGGERS:保存trigger信息

术之多

Security4:授予查看定义,执行SP和只读数据的权限

2022-10-15 原文

SQL Server数据库有完善的权限管理机制,对于存储过程,其权限分为查看定义,执行和修改,查看SP定义的权限是:VIEW DEFINITION ,执行存储过程的权限是:EXECUTE,修改SP的权限是:ALTER,但是该权限也能修改表结构,视图的定义等数据库对象。数据的读取权限是SELECT,这个查看定义是不同的权限。对于一个数据表,如果仅授予VIEW DEFINITION权限,而没有授予SELECT权限,那么用户只能查看数据表的结构(Schema),而无法查看表中存储的数据。

在管理权限时,可以给特定的用户授予“只能读取数据和执行SP,而不能修改数据”的权限,也就是,使特定的用户只能查看数据(只读,SELECT),只能查看定义(VIEW DEFINITION),和执行SP的权限(EXECUTE),这样的权限设置,既能使用户查看到业务数据,又能避免用户私自修改数据。

对于数据的读取权限,SQL Server内置固定数据库角色 db_datareader,把用户添加到该角色中,用户就被授予了对数据库中所有数据(表或视图)的读取权限,就是说,用户可以对数据表或视图执行select命令读取数据;也可以逆向思考,不允许用户修改数据,把用户添加到固定数据库角色 db_denydatawriter 中,这样,用户不能添加,更新和删除任何数据,就是说,不能对任何数据表执行insert,updae和delete命令。这两个数据库角色,相当于以下两个命令:

grant select to [domain\user];

deny update,delete,insert to [domain\user];

权限的分配分为:授予(grant)和拒绝(deny),对于已分配的权限,也可以通过回收(revoke)命令收回,权限管理是个技术活。

一,授予查看定义的权限

查看数据库对象的权限是VIEW DEFINITION,通常数据库对象是指:数据表,视图,存储过程,函数等,被授予VIEW DEFINITION权限之后,用户只能查看定义,而无法从数据表或视图中查看数据,无法执行SP和函数等。

1,授予SQL Server实例级别的查看定义的权限

以下代码用于授予权限VIEW ANY DEFINITION,代码必须在master数据库中执行,使指定的用户能够查看当前SQL Server实例中的所有数据库对象的定义:

use master

go

grant view any definition to [domain\user]

2,授予User,只能查看当前数据库对象的定义的权限

以下代码用于授予VIEW DEFINITION,使指定的用户能够查看指定数据库中的所有对象的定义:

use db_name

go

grant view definition to [domain\user]

3,授予User,只能查看当前数据库的指定数据库对象的定义的权限

以下代码用于授予VIEW DEFINITION,通过on子句,使指定的用户能够查看指定对象的定义:

use db_name

go

grant view definition

on object::schema_nameobject_name

to [domain\user]

二,授予执行存储过程的权限

以下代码授予用户执行存储过程的权限,通过on子句指定用户只能执行特定的SP:

use db_name

go

grant execute

on object::schema_nameobject_name

to [domain\user]

如果grant execute省略on子句,表示所有的SP,这样,用户可以执行数据库中的所有SP:

use db_name

go

grant execute

to [domain\user]

三,授予用户修改存储过程的权限

修改存储过程的权限是ALTER,但是,ALTER同时也能修改表结构,视图定义等数据库对象,如下代码所示:

GRANT ALTER TO [domain\user]

如果仅授予用户修改SP的权限,那么必须逐个设置,或者把SP创建在独立的schema下,通过授予用户修改schema,达到控制用户只修改SP的目的:

GRANT ALTER

ON SCHEMA::proc_schema

TO [domain\user]

四,授予用户查看SP的定义,执行和修改SP的权限

通过GRANT子句,可以一次性把查看SP的定义,执行和修改SP的权限都授予指定的用户:

GRANT ALTER, EXECUTE, VIEW DEFINITION

ON SCHEMA::[proc_schema]

TO [domain\user]

在GRANT子句中省略ON子句,表示授予用户的权限作用于所有的数据库对象,包括数据表,视图,存储过程,函数等。

五,授予Public用户查看定义的权限

当Login没有映射到相应的User时,该Login被映射到默认的Public,设置给用户查看定义的权限,这样,每个登陆到SQL Server实例的用户,都可以查看定义。

use master

go

grant view any definition to public

use dbn_ame

go

grant view definition to public

六,授予用户查看定义,只读数据和执行SP的权限

存储过程 sp_msforeachdb @command 是微软未公开的存储过程,该存储过程遍历当前的SQL Server实例的所有数据库,在每个数据库中执行相同的命令:

use master

go

create login [domain\user]

from windows;

go

grant view any definition

to [domain\user] ;

go

exec sp_msforeachdb

'

use [];

if not exists

(

select

from sysdatabase_principals

where name=''domain\user''

)

create user [domain\user]

for login [domain\user];

alter role db_datareader

add member [domain\user];

grant execute to [domain\user];

'

go

遍历数据库的功能,也可以使用游标来实现,本文不再赘述。

参考文档:

Run same command on all SQL Server databases without cursors

Granting View Definition Permission to a User or Role in SQL Server

Security4:授予查看定义,执行SP和只读数据的权限的更多相关文章

MySQL能否授予查看存储过程定义权限给用户

在其他RDBMS中,可以将查看某个存储过程(PROCEDURE)定义的权限给某个用户,例如在SQL Server中,可以单独将查看ProcedureName定义的权限授予UserA GRANT VIE

查看ORACLE执行计划的几种常用方法

SQL的执行计划实际代表了目标SQL在Oracle数据库内部的具体执行步骤,作为调优,只有知道了优化器选择的执行计划是否为当前情形下最优的执行计划,才能够知道下一步往什么方向 执行计划的定义:执行目

查看Job执行的历史记录

SQL Server将Job的信息存放在msdb中,Schema是dbo,表名以“sysjob”开头 一,基础表 1, 查看Job和Step,Step_ID 是从1 开始的 select jjo

查看Oracle执行计划

1PL/SQL解释计划窗口 优点:方面 缺点:看到信息有限 2explain_plan for 针对某个句子优化较方便 3sqlplus Sqlplus里输入命令: set autotrace

如何查看MySQL执行计划

在介绍怎么查看MySQL执行计划前,我们先来看个后面会提到的名词解释: 覆盖索引: MySQL可以利用索引返回select列表中的字段,而不必根据索引再次读取数据文件 包含所有满足查询需要的数据的索引

查看SQL执行计划

一用户进入某界面慢得要死,查看SQL执行计划如下(具体SQL语句就不完全公布了,截断的如下): call count cpu elapsed disk

MSSQL优化之——查看语句执行情况

MSSQL优化之——查看语句执行情况 在写SQL语句时,必须知道语句的执行情况才能对此作出优化了解SQL语句的执行情况是每个写程序的人必不可少缺的能力下面是对查询语句执行情况的方法介绍 一设置

查看Oracle执行计划的几种方法

查看Oracle执行计划的几种方法 一通过PL/SQL Dev工具 1直接File->New->Explain Plan Window,在窗口中执行sql可以查看计划结果其中,Cos

查看Mysql执行计划

使用navicat查看mysql执行计划: 打开profile分析工具: 查看是否生效:show variable like ‘%profil%’; 查看进程:show processlist; 选择

随机推荐

从零自学Java-1编写第一个Java程序

编写第一个Java程序 完成工作:1在文本编辑器中输入一个Java程序 2使用括号组织程序 3保存编译和运行程序 package comJsample;//将程序的包名称命名为com

JSP 过滤器

JSP教程 - JSP过滤器 JSP过滤器是可用于拦截来自客户端的请求或处理来自服务器的响应的Java类 过滤器可用于执行验证,加密,日志记录,审核 我们可以将过滤器映射到应用程序部署描述符文件w

ASPNET动态引用样式表(css)和脚本(js)文件

// 引入js文件 HtmlGenericControl scriptControl = new HtmlGenericControl("script"); scriptContr

mySQL 约束 (Constraints)

约束用于限制加入表的数据的类型: 1创建表时规定约束(通过 CREATE TABLE 语句) 2表创建之后也可以(通过 ALTER TABLE 语句) 约束类型: NOT NULL(非空) UN

直播内容不合规怎么办?智能AI为您解决审核难题

背景 近些年来,视频直播快速发展,大量的直播平台如雨后春笋一般出现,但是这同样给直播内容的监管带来了巨大的挑战,一方面国家对于直播内容监管的要求日益严格,另一方面相对于文字内容的审核,多媒体内容的审核

selenium - pycharm三种案例运行模式

1unittest 运行单个用例 (1)将鼠标放到对应的用例,右键运行即可 2unittest运行整个脚本案例 将鼠标放到if __name__ == "__main__":

dns服务器测试工具

下载地址:>

sp_start_job存储过程是在msdb数据库中,所以需要指定数据库名

EXEC msdbdbosp_start_job @job_name = 'jobtest1'

用语句改作业调度相当麻烦,不建议用语句改。

用语句改的思路

首先从系统表中获取调度Id

SELECT schedule_id FROM msdbdbosysjobschedules WHERE job_id=(SELECT job_id FROM msdbdbosysjobs WHERE name='jobtest1')

然后执行存储过程更新调度

EXEC msdbdbosp_update_schedule @schedule_id=1, @freq_interval=1,@active_start_time=0

注意,@schedule_id=1是假设第一步获取的调度id为1,如果是别的值就修改成别的。

@freq_interval=1表示每周日执行,相应的周一为2 周二为4 周三为8 周四为16 周五为32 周六为64

@active_start_time=0 表示0点执行,其它时间按小时分秒的形式,比如1点05分06秒就是10506

以上就是关于如何在quartz的job任务中 *** 作数据库全部的内容,包括:如何在quartz的job任务中 *** 作数据库、security可以针对用户设置只读权限吗、我在 sql server 2000 上执行作业 提示:未能找到存储过程 'sp_start_job',请问是为什么呢要怎么处理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9831538.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存