数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限?


发布日期:2021年04月06日
 
为什么在使用动态 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 语句引用的)的正确权限来保护数据免受未授权的操作

上一篇:SQLServer Job运行成功或失败时发送电子邮件通知的图文教程

下一篇:sqlserver2005使用row