是否可以使用SqlCommand强制执行只读行为?

Dea*_*unt 6 c# sql

是否可以使用System.Data.SqlClient访问Sql Server数据库的代码强制执行只读权限?

我想允许受信任的用户在网站上编写自己的SELECT语句.

不,我不是在这里拖钓!显而易见的解决方案是在数据库中创建只读用户,并在连接字符串中使用这些凭据,当然只有白痴接受网页中的SQL语句.这是用户部署问题,我不相信其他人正确设置它并且不想编写代码来检查只读连接字符串是否只读.

一种解决方案是解析SQL并验证它是一个只读命令,还是做类似的事情.我想做的是做一些事情;

SqlConnection conn = new SqlConnection(myConnectionString, Flags.Readonly)
Run Code Online (Sandbox Code Playgroud)

更新 给定具有SA权限的连接字符串,"使用密码= xxx创建用户blah""使用my-db""创建登录blah""将mytable选择授予blat".然后创建一个新的连接字符串.

Per*_*ahl 6

您可以使用事务并始终回滚吗?(但要确保执行的 sql 没有提交)


TLi*_*ebe 6

在SQL Server中创建一个新登录名,只为该登录名提供所需的权限.然后在连接字符串中让应用程序使用该登录名.你在帖子中提到这是一个明显的解决方案,但我不明白为什么你不想这样做.


Ada*_*son 3

不,没有内置工具可以确保最终用户的操作不会产生副作用。虽然在您的场景中它可能很简单,但通用的实现即使不是不可能,也会非常复杂。如果 select 语句使用有副作用的 UDF 怎么办?

  • EXEC('DR'+'OP'+'Tab'+'LE'+'我们'+'他们') (3认同)