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