Please be aware that the content in SAP SQL Anywhere Forum will be migrated to the SAP Community in June and this forum will be retired.

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

asked 16 Jan '18, 11:36

Reimer%20Pods's gravatar image

Reimer Pods
accept rate: 11%

Is that a related question?

(16 Jan '18, 14:27) Volker Barth
Replies hidden

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.

(17 Jan '18, 03:35) Reimer Pods

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?

(17 Jan '18, 06:47) Volker Barth

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

(17 Jan '18, 06:48) Vlad

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...)

(17 Jan '18, 06:56) Volker Barth

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; I said, it is all WILD GUESSWORK :)

(17 Jan '18, 08:09) Breck Carter
Replies hidden

very wild :)

(17 Jan '18, 08:27) Vlad

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:)

(17 Jan '18, 09:30) Volker Barth
Comment Text Removed

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.

(17 Jan '18, 14:19) Breck Carter

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...

(18 Jan '18, 04:38) Volker Barth

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.

(18 Jan '18, 06:05) Reimer Pods

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

(18 Jan '18, 07:06) Reimer Pods

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;

'',  '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 :)

(19 Jan '18, 07:38) Breck Carter

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

(19 Jan '18, 08:32) Volker Barth

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

(23 Jan '18, 03:39) Reimer Pods
showing 3 of 15 show all flat view
Be the first one to answer this question!
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here



Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text]( "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:


question asked: 16 Jan '18, 11:36

question was seen: 3,955 times

last updated: 23 Jan '18, 03:39