sql - 在 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
任何人都可以帮助限制它。
解决方案
推荐阅读
- java - 使用 Apache POI 创建 .csv 文件不起作用
- bash - 在 Awk 中使用其中一个列条目时,参数扩展不起作用
- r - R将egor对象转换为igraph/使用可视化应用程序(错误:重复的顶点名称)
- python - 在曲线下着色多个区域的有效方法
- r - 在 for 循环中设置 data.table 的子集速度较慢且资源匮乏
- elasticsearch - 在弹性搜索中查找条纹
- reactjs - Formik 使用 React Native Switch
- angularjs - ng-if 依赖元素不消失
- python - 包含要使用 python 保存在 excel 中的值列表的变量
- c++ - 如何设置通过引用函数提供的 LPWSTR 指针?