问题来源:最近有同事需要执行批量删除语句.根据他提供的业务需求,推荐他使用“TRUNCATE TABLE”语句.但使用该语句需要 ALTER权限,这与执行用户的角色不符. 解决办法:使用EXECUTE AS语句修改执行权限.代码如下: ALTER PROCEDURE [dbo].[sp_TruncateTable] ) WITH EXECUTE AS SELF AS BEGIN --打印出当前执行上下文用户 SELECT nt_username, loginame FROM sys.syspro
Oracle推荐给用户授予权限时,给予用户可以完成操作的最小权限.应当尽量避免对用户授予包含ANY的系统权限,如SELECT ANY TABLE,CREATE ANY TABLE等.这些包含ANY的系统权限很大,只应该授权给DBA用户,而不应该授权给普通用户.如果给非DBA用户授权ANY系统权限,则会使数据库处于不安全状态.下面的例子展示了一个用户具有了CREATE ANY PROCEDURE和EXECUTE ANY PROCEDURE权限,就可以通过其他方式获取数据库中所有的权限. SQL>
SQL Fundamentals || Oracle SQL语言 语句 解释 Create user Creates a user(usually performed by a DBA) Grant Gives other users privileges to access the objects Create role Creates a collection of privileges, usually performed by a DBA Alter user Changes a use
Oracle Database 系统权限和对象权限 Oracle中的系统权限和对象权限 DCL 数据控制语言 -- 查看对象的权限 grant / revoke 查看登录用户 Show user 查看管理员用户表dba_users结构 desc dba_users 查看用户名 select username from dba_users; 启用用户 Alter user username account unlock; 禁用用户 Alter user username account lock;