如何解决许可问题
| 我有一个.NET应用程序,它将信息存储在sql服务器数据库中。 我想将许可添加到我的应用中,以便仅根据许可在数据库中允许一定数量的项目。 举例来说,例如,我有一个\“ items \”表,并且许可证用于5000个项目。 我面临的问题是,如果表行数> 5000,我就不能依靠我的应用程序不插入项目,因为由于服务器是由客户提供的,因此用户可以将项目直接插入数据库中,因此他将完全不受限制地访问数据库。 (由于这个特殊问题,我也不能使用任何sql服务器端解决方案) 另外,如果我在表格中添加一个字段,并用密码散列的项目信息填充,那么用户将无法再手动添加项目,但是我将不得不遍历整个表并检查每个项目是否获得许可并在确定是否添加每个新项目之前对许可的项目进行计数。这是不切实际的,因为我每分钟收到数百个项目,因此它将极大地影响性能。 有谁知道如何实现这一目标?解决方法
您可以颠倒限制,将查询限制为5000个结果。这可以通过TOP子句轻松完成。
这样,用户将多少行推入数据库中都没有关系,您的程序将只能使用其许可的行。
,最好的选择可能是在
Items
桌上的INSTEAD OF触发器,以拒绝超出限制的插入。
,我还建议使用一个简单的触发器(如果需要,可以基于配置表)。
我想了解更多有关整体业务需求的信息,因为如果您每分钟接收数百行,那么该表似乎会在一个小时内填满。
,我会将许可证验证与您的DL一起解耦。而是让您的应用在某个时候运行其验证脚本,然后在验证失败时采取必要的操作(禁用/警告)。
这样的事情应该很快返回:
SELECT
[TableName] = so.name,[RowCount] = MAX(si.rows)
FROM
sysobjects so,sysindexes si
WHERE
so.xtype = \'U\'
AND
si.id = OBJECT_ID(so.name)
GROUP BY
so.name
ORDER BY
2 DESC
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。