By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
438,414 Members | 1,586 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 438,414 IT Pros & Developers. It's quick & easy.

How to control number of users in a database?

P: n/a
kai
Hi,
I use VB 2008 as front end, SQL Server 2005/2008 as back end, I want
control number of cucurrent users log on to the database, I am trying to use
a stored procedure, but it did not work. Is this possible? Please help.

Thanks

Kai

Oct 7 '08 #1
Share this Question
Share on Google+
2 Replies


P: n/a
kai (ka******@bellsouth.net) writes:
I use VB 2008 as front end, SQL Server 2005/2008 as back end, I want
control number of cucurrent users log on to the database, I am trying to
use a stored procedure, but it did not work. Is this possible? Please
help.
If you actually mean *database* I don't think there is a foolproof
way to do this. You could set up a logon trigger that checks the current
database and compares this the number of connections active in the database,
and if the magic number is exceeded raises an error.

However, if the user would first connect to, say, the master database,
then issue a USE for the database in questions, in which case your trigger
wouldn't catch him.

On the other hand, if you wish to restrict the number of connections to
the entire *server*, this is very easy:

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'user connections', 50
RECONFIGURE

I would advice you to be very careful with this. If your application
uses multiple connections, you may find that 50 connections scales down
to a maximum of 10 users.

--
Erland Sommarskog, SQL Server MVP, es****@sommarskog.se

Links for SQL Server Books Online:
SQL 2008: http://msdn.microsoft.com/en-us/sqlserver/cc514207.aspx
SQL 2005: http://msdn.microsoft.com/en-us/sqlserver/bb895970.aspx
SQL 2000: http://www.microsoft.com/sql/prodinf...ons/books.mspx

Oct 7 '08 #2

P: n/a
On Oct 7, 8:06*am, "kai" <kaili...@bellsouth.netwrote:
Hi,
*I use VB 2008 as front end, SQL Server 2005/2008 as back end, I want
control number of cucurrent users log on to the database, I am trying to use
a stored procedure, but it did not work. Is this possible? Please help.

Thanks

Kai
Hi Kai,

As part of your application's login, you might want to try querying
sys.sysprocesses. In SQL 2005/2008, this is a system view that shows
information on all current connections to your SQL Server Instance.
http://msdn.microsoft.com/en-us/library/ms179881.aspx

When your VB app connects to the database, you are able to supply the
program_name as part of the connection string-- this application name
is available in sysprocesses. I presume that your interest in
counting connections is so that you can control licensing of your
application. You can use this basic query to count connections by
your application:

SELECT COUNT(*)
FROM master.dbo.sysprocesses
WHERE program_name = 'MyApplication'

If your application creates multiple connections to the database, you
might end up counting that single user more than once. If that's the
case, you might need to try a variation utilizing other columns in
sysprocesses.

SELECT COUNT(DISTINCT hostname)
FROM master.dbo.sysprocesses
WHERE program_name = 'MyApplication'

SELECT COUNT(DISTINCT nt_username)
FROM master.dbo.sysprocesses
WHERE program_name = 'MyApplication'
Oct 10 '08 #3

This discussion thread is closed

Replies have been disabled for this discussion.