听起来很愚蠢的问题但有没有办法对SQL Server上的特定用户实施选择大小限制?即使用户发送select *,结果集也只包含第一个,比方说10个结果。与顶级运算符一样,但在安全上下文中。这可能有两个好处: 1)防止特殊查询膨胀服务器。 2)限制对敏感数据的访问。
谢谢大家。
答案 0 :(得分:0)
"设置rowcount 10"命令有点酷......它会将select语句的返回行数限制为给定的数字。
关于它的好处是你可以将它添加到"任何" SQL语句("设置rowcount 10;选择......")并且它完成它的事情;你不必调整select语句(可能很复杂)来找到插入" top N"的位置。
注意:此设置在关闭之前保持有效(对于当前连接)(使用"设置rowcount 0"),因此您确实需要仔细管理它。
http://msdn.microsoft.com/en-us/library/ms188774(v=sql.90).aspx
答案 1 :(得分:0)
您可以为表创建视图,并在基于suser_sid的详细信息中执行SELECT TOP(详细信息请参见Anyway to create a SQL Server DDL trigger for "SELECT" statements?)。
这可以防止过多的行选择,并且具有针对特定用户的强制执行的好处,而且没有机会让他们进行更改。
我遇到这种情况的唯一一次是阻止动态数据库访问(在应用程序之外),允许单个用户提取数据库中的所有数据,或进行过多的聚合,这将揭示敏感的操作安全性数据;有些数据比总体上更加危险。