设为首页 加入收藏

TOP

为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限?
2014-09-29 04:00:04 来源: 作者: 【 】 浏览:50
Tags:为什么 使用 动态 SQL 语句 必须 低层 数据库 对象 授予 权限

答: 出于安全原因需要这些权限。请考虑下列简单存储过程:


USE pubs
GO


Create PROCEDURE GeneralSelect @TableName SYSNAME
AS
EXEC (‘Select * FROM ‘ + @TableName)
GO


您可能希望您的存储过程发出一个与下面类似的调用:


USE pubs
EXEC GeneralSelect ‘authors’


但是,请考虑传送给存储过程的下列顺序:


USE pubs
EXEC GeneralSelect ‘authors Drop TABLE authors’


如果存储过程的创建者是 pubs 数据库中 db_owner 角色的成员,并且您的用户只需要对存储过程具有 EXECUTE ㄏ蓿?蚋妹?罱?境 authors 表。SQL Server 通过要求用户证明具有对数据库对象(通过动态 SQL 语句引用的)的正确权限来保护数据免受未授权的操作。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇What is EJB 下一篇MYSQL数据库设计数据类型选择需要..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: