cancel
Showing results for 
Search instead for 
Did you mean: 

How can I get the number of seat licences that are in use (SA-16)

reimer_pods
Participant
4,435

Hi there,

I know how to determine the number of licences (in this case "perseat" aka "Networked Seat (ST)"), that are registered for an installation, by using sa_eng_properties or property ('Licensecount').

But is there any kind of property where I can see the number of licenses that are currently in use? UniqueClientAddresses was my first approach, but doesn't help if clients work thru a Terminal/Citrix Server.

Any ideas welcome

VolkerBarth
Contributor
0 Kudos

Is that a related question?

reimer_pods
Participant
0 Kudos

Only very remotely. We don't want to limit access, just see the number of currently used licenses. In some cases users got an error message, that a new connection couldn't be established, because all licenses were already taken.

VolkerBarth
Contributor
0 Kudos

Do those terminal clients use separate user names per user? AFAIK that license type is based on "named users"...

What error do you get when the connection limit is exceeded - SQLCODE -102?

Vlad
Product and Topic Expert
Product and Topic Expert
0 Kudos

Volker, what if I have the single DB user and I share it between applications/real users. Will this violate the license?

VolkerBarth
Contributor
0 Kudos

I'm just a customer so cannot answer license issues... Do you relate to the number of perseat licenses needed when one user uses two different applications using the same database server? I guess this should still count as one user... I think from a license point of view, it should not matter whether different application users use the same or different user names (although I could imagine the database engine treats them differently w.r.t limit checking...)

Breck_Carter
Participant
0 Kudos

Some wild guesswork...

The only mention of "perseat" in the entire V16 Help is this: "A perseat license restricts the number of client connections to the database server."

So... it's connections, not users or ip addressess.

Also, is client connections, not internal connections like INT-EXCHANGE.

One might assume it also excludes web SERVICE and EVENT connections.

Let's guess that it is all connections with connection numbers in the lower range:

SELECT COUNT(*) AS client_connection_count
  FROM sa_conn_list() 
 WHERE sa_conn_list.Number < 1000000000;

Try running that query when the server is giving the error message, to see if the result matches what you know about your license.

The query won't work if you have multiple databases on one server; it will have to be extended to call sa_conn_list() for each database id 0, 1, 2...

Here's a starting point for that, showing only db id zero:

SELECT DB_ID(), COUNT(*) AS client_connection_count
  FROM sa_conn_list( dbidparm = 0 ) 
 WHERE sa_conn_list.Number < 1000000000;

...like I said, it is all WILD GUESSWORK 🙂

Vlad
Product and Topic Expert
Product and Topic Expert
0 Kudos

very wild 🙂

VolkerBarth
Contributor
0 Kudos

I'm quite sure it is not merely connections, simply because some applications will use more than one connection internally (still regular connections from the engine's point of view) , and AFAIK those still do count as one license...

The current online edition/license document mentions "Named users", that is why I took that term:)

Breck_Carter
Participant
0 Kudos

What exactly is a "named user"?

I can find no definition anywhere, not in the Help, not in the license docs. The Help does have two references to "named user id" but those are in completely different contexts of GRANT and REVOKE.

VolkerBarth
Contributor
0 Kudos

Well, I don't know either, it's just the official term used in SAPStore for the v17 perseat licensing model...

All that being discussed, I hope some official answer will arrive...

reimer_pods
Participant

Thanks for all your thoughts.

What Breck suggested, was available in former versions as "concurrent license", which IIRC meant connections, but IMHO doesn't apply to "networked seats" (how they are called in the license page of the SAP Support Portal).

In my experience, those "named users" or "perseat" licenses (in dblic speak) correlate with the number of client sessions ("PC"), from with connections to one SQLA engine are made. Actually I reckon the term "named users" could be misleading...

The only thing I've come up with so far is extracting HOST=* from the connection property AppInfo and count the distinct values. But I'm not sure if this reflects the way the engine determines the license usage.

So I'd rather rely on some property or method provided by the engine.

reimer_pods
Participant
0 Kudos

Yes, it's -102 (in German: Grenzwert für Anzahl der Verbindungen zum Datenbankserver überschritten)

Breck_Carter
Participant
0 Kudos

As noted by others, my wild guesswork is wildly incorrect 🙂

SELECT @@VERSION, PROPERTY ( 'LicenseCount' ), COUNT(*) AS client_connection_count
  FROM sa_conn_list() 
 WHERE sa_conn_list.Number < 1000000000;

@@VERSION,PROPERTY('LicenseCount'),client_connection_count
'16.0.0.2512',  '100',  503

In the above test, dblic was run with -l perseat -u 100, then a benchmark test started 500 separate threads that made 500 separate client connections to the database.

Every connection used a different SQL Anywhere user id, but they all ran OK on the same local computer and thus used the same OS User, AppInfo HOST, and AppInfo IP.

I'm guessing web servers, connection pools and Citrix servers don't fall afoul of the perseat limit, but the definition of "seat" and "named user" remains elusive 🙂

VolkerBarth
Contributor
0 Kudos

Well, testing with 500 different client connections from 500 separate IP addresses might be more difficult...:)

reimer_pods
Participant
0 Kudos

Thank you for clarifying that, it matches my understanding of seat. Still hoping for comments from the experts though ...

Accepted Solutions (0)

Answers (0)