春节将到,祝大家合家幸福!下面是问题:用Delphi 5.0开发一个MIS系统,数据库用 SQL Server 2000 。想控制连接数据库的用户的数量。如果只允许一个用户连接,就是单机版(数据库直接放本机上),其他用户不允许同时访问数据库。网络版将数据库放在服务器上,想控制同时访问的数量。请教各位高人该如何通过程序解决?最好不用手动配置数据库。谢谢!!还可以再给100分。

解决方案 »

  1.   

    SQL-server本身有控制连接线程的设置
      

  2.   

    sql 本身有控制用户数量的功能,可以控制允许多少个用户同时登陆的功能,就在配置工具一栏里,不知能否解决你的问题
      

  3.   

    我知道“SQL-server本身有控制连接线程的设置”。我想通过程序来实现,不用手工设置。不然,用户自己也可以设置了。欢迎大家赐教程序。
      

  4.   

    如果 用户登陆则某个字段为T,否则为F
    统计T有多少个,如果大于你不希望的数字就提示
      

  5.   

    嗯?是用SQL吗?不是说SQL有个存储过程可以监查到当前活动登陆用户的吗?
      

  6.   

    我的程序既可以连接本地数据库,也可连服务器。算是两层吧。
    “SQL有个存储过程可以监查到当前活动登陆用户”,能再详细说说?
      

  7.   

    你看看sp_who,详细解释看帮助。
      

  8.   

    user connections 选项
    使用 user connections 选项指定允许同时连接到 Microsoft® SQL Server™ 的最大用户数。实际允许的用户连接数还取决于正使用的 SQL Server 版本以及应用程序和硬件的限制。SQL Server 最多允许同时 32,767 个用户连接。因为 user connections 是动态的(自动配置选项),SQL Server 将根据需要自动调整用户连接的最大用户数,最大不超过允许的最大值。例如,如果仅有 10 个用户登录,则要分配 10 个用户连接对象。在大多数情况下,没有必要改变该选项的值。可以使用 SQL 查询分析器和下面的 Transact-SQL 语句来确定系统允许的最大用户连接数:SELECT @@MAX_CONNECTIONSuser connections 可以避免服务器因过多的并发连接而过载。可以根据系统和用户需求估计连接数量。例如,在一个有许多用户的系统中,通常每一个用户可能不需要一个唯一的连接,连接可以在用户中间共享。运行 OLE DB 应用程序的用户需要为每个打开的连接对象启动一个连接,运行 ODBC 应用程序的用户需要为应用程序中的每个活动连接句柄启动一个连接,而运行 DB-Library 应用程序的用户需要为调用 DB-Library dbopen 函数的每个进程启动一个连接。重要  如果必须使用该选项,则不要将值设置得太高,因为不论是否使用连接,每个连接都需要大约 40 KB 的开销。如果超过了用户连接的最大允许值,将收到一条错误信息,而且直到出现一个可用连接之前不能够建立连接。
    user connections 是一个高级选项。如果要用 sp_configure 系统存储过程改变该选项,必须把 show advanced options 设置为 1,该设置在停止并重新启动服务器后生效。