image

编辑人: 流年絮语

calendar2025-06-13

message3

visits699

为什么在使用动态 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 语句时必须为低层数据库对象授予权限?

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share