为什么在使用动态 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 语句引用的)的正确权限来保护数据免受未授权的操作。
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 语句引用的)的正确权限来保护数据免受未授权的操作。
【为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限】相关文章
1. 为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
2. SQL Server的固定数据库角色都有哪些?对应的服务器权限有哪些?
6. 什么是动态端口(Dynamic Ports)?动态端口的范围是多少?
8. Oracle查看当前用户的角色和查看当前用户的系统权限和表级权限
10. mysql_pconnect()和mysql_connect()有什么区别
本文来源:https://www.mianshiwenti.com/a13373.html
进入下载页面
上一篇:影响oracle查询性能的因素都有哪些
下一篇:Oracle测试试题
﹝为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限﹞相关内容
- mysql有关权限的表都有哪几个
- 在使用非全零作为空指针内部表达的机器上, NULL是如何定义
- mysql的最长数据库名,表名,字段名可以是多长
- 在SQL Server中创建数据库主要有那种方式
- 说一下mysql, oracle等常见数据库的分页实现方案
- SQL Server 2000数据库的文件有哪些,分别进行描述。
- SQL数据库笔试题
- SQL Server数据库笔试题和答案
- SQL Server 2000数据库的文件有哪些,分别进行描述
- MYSQL相比于其他数据库有哪些特点