我正在编写一个简单的实用程序,它允许我们的用户在数据库上运行简单的选择SQL语句来检索他们需要的数据。只需一个文本框和一个按钮,当他们点击按钮时,它会将查询结果吐出一个列表。
我遇到的问题是我只希望它们能够运行SELECT语句。我不希望执行任何编辑语句,即更新,插入,删除,删除等。
是否有一种简单的方法来解析sql字符串以确保它只输入一个只读的select语句?
答案 0 :(得分:0)
更好的方法是使用sql权限。作为datareader,您的用户只能选择SELECT。 exec sp_addrolemember db_datareader, <user>
答案 1 :(得分:0)
处理此问题的最佳方法是创建仅具有有限权限的用户。
如果您想允许用户从所有表中读取数据,那么您可以使用Steve D已经建议的内容。
如果您想允许用户只读取某些表中的数据而不是所有表,那么您需要创建一个只具有“公共”角色的用户,然后为特定表创建GRANT SELECT。
确保用户仅在此处为给定数据库选择“公共”
然后只对所有表执行此查询
grant select on <schema>.<table> to <user>