老尸 发表于 2015-1-16 14:07:10

数据库平安-怎样让指定用户能够对数据表举行Truncate操纵

对于update操作,event中依次记录旧行,新行的值。1、怎样让指定用户能够对数据表举行Truncate操纵
Truncate在对年夜表全删除操纵时,会分明比Delete语句更快更无效,可是由于它不必要寄存日记,而且必定是全表删除,以是形成数据的不成恢复性。也申明了它的伤害性。
可是,实行Truncate必要有表具有者、体系办理员、db_owner、db_ddladmin这些内里的个中一种高权限脚色才干实行。

对此,可使用2005版本以后的EXECUTEAS表达式来完成权限内容的切换:
1.切换登录:EXECUTEASLOGIN
2.切换用户:EXECUTEASUSER
3.切换实行权限:EXECUTEASowner/’username’,使用高用户权限来实行功课。此步骤能够在低权限实体下实行高权限操纵,也能制止平安性毛病。

别的,只要EXECUTEASCaller能够跨数据库实行,而其他体例举行的权限切换仅限定于本数据库。
注重:实行EXECUTEASUSER摹拟利用者切换时,必要先取得被摹拟用户的受权。可使用REVERT来复原实行内容前的原始身份。

2、怎样制止SQL注进的打击
关于数据库使用程序,不管是那种DBMS,SQL注进都是一年夜隐患。
要制止SQL注进,应当最最少做到以下几点:
1.反省输出的数据,使用程序不要信任用户输出的数据,必需经由查验后才干输出数据库。要扫除%,--等特别标记。
2.制止果度表露毛病信息。倡议能够转换成Windows事务大概是转换成使用程序外部毛病信息。
3.利用参数化查询大概存储历程

注重:静态SQL是形成SQL注进的次要缘故原由为了在某种程序上弥补这一缺陷,许多SQL命令都有一个DELAY_KEY_WRITE项。这个选项的作用是暂时制止MySQL在该命令每插入一条新记录和每修改一条现有之后立刻对索引进行刷新,对索引的刷新将等到全部记录插入/修改完毕之后再进行。

谁可相欹 发表于 2015-1-18 12:01:36

需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。

莫相离 发表于 2015-1-26 15:32:35

但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。

分手快乐 发表于 2015-2-4 20:37:18

大侠们有推荐的书籍和学习方法写下吧。

兰色精灵 发表于 2015-2-10 09:17:02

having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。

若天明 发表于 2015-3-1 08:56:10

记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。

金色的骷髅 发表于 2015-3-10 15:16:42

数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。

小女巫 发表于 2015-3-17 08:50:26

学习SQL语言的话如果要学会去做网站就不是很难!但是要做数据库管理的话就有难度了!

灵魂腐蚀 发表于 2015-3-24 04:39:19

但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右)
页: [1]
查看完整版本: 数据库平安-怎样让指定用户能够对数据表举行Truncate操纵