许可问题

如何解决许可问题

| 我有一个.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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?