首页 > 解决方案 > 在 SQL Server 中执行存储过程时拒绝插入、更新、删除

问题描述

CREATE LOGIN reader with password='Test@123#';
CREATE USER ureader for login reader;
grant connect to ureader;

GRANT SELECT TO ureader
DENY INSERT, UPDATE, DELETE, ALTER, REFERENCES TO ureader

我已经使用上面的脚本创建了新的 SQL 登录。基本上我想要一个只允许选择查询的 SQL 用户。如果程序里面确实有插入/更新/删除语句,它不应该允许它。

CREATE PROCEDURE  [dbo].[proc_testreport]
    @Mode int
AS           
BEGIN         
    IF(@Mode=1)      
    BEGIN       
        
        SELECT 1 AS 'DataValue','IP' AS 'DataText'
        UNION 
        SELECT 2 AS 'DataValue','OP' AS 'DataText'
        UNION
        SELECT 3 AS 'DataValue','MHC' AS 'DataText' 

        UPDATE [dbo].[TestTable] set test='F'

    END
END

当我执行上述过程时,它会更新表 [dbo].[TestTable] 上的数据,但它不应该允许更新它。

EXEC [Proc_TestReport] @Mode = 1

任何人都可以帮助限制它。

标签: sqlsecuritysql-updaterolesrights

解决方案


推荐阅读