Is there a way to limit concurrent license usage via Citrix or Terminal Services? The concurrent licensing model is based on connections per IP address, so in a thin client situation, where there are multiple instances of an application connecting from one IP address, there does not appear to be a way to limit the number of users. This can't be an issue that is just affecting us, so I am interested in any possible solutions or how others deal with this situation?

asked 10 Apr '17, 06:23

robertwigley's gravatar image

robertwigley
266111321
accept rate: 80%

edited 10 Apr '17, 09:27

2

One approach is to use the login_procedure to check the number of connections. There is an example that limits to 3 connections. You can extend the example to limit the number of connections to match the actual licensing by querying the server property LicenseCount

See http://dcx.sap.com/index.html#sqla170/en/html/3bcbde926c5f1014a802e3b03215f7b8.html*loio3bcbde926c5f1014a802e3b03215f7b8

http://dcx.sap.com/index.html#sqla170/en/html/3bc6ad206c5f1014b043b4cc42d7fc07.html*loio3bc6ad206c5f1014b043b4cc42d7fc07

(10 Apr '17, 08:55) Chris Keating

Thank you Chris. The trouble with that approach is that there is no definitive way of knowing how many connections should be allowed per user. For example, say the main application only ever has three connections, that would be fine for the application itself, but there are other things that could use a connection over and above the application, e.g. dbremote.exe for synchronisation or some other utility. We actually have other utility applications beyond the main application itself as well, for example for creating reports. This would then prevent legitimate use as, in this example, dbremote.exe can use more than one connection, which could then prevent the application from running, as the connections are being used by the utility. The only way I can think this might work, is if it's possible to check the name of the executable connecting?

(10 Apr '17, 09:05) robertwigley
Replies hidden
2

is if it's possible to check the name of the executable connecting?

Sure. You can use connection_property('AppInfo') for that, which contains several comma semicolon-separated values of interest. The client application can be extracted e.g.:

select row_value
from sa_split_list(connection_property('AppInfo'), ';')
where row_value like 'EXE=%'

with further parsing...

Note, optionally, you can also add your own "AppInfo" by supplying that via the AppInfo connection parameter, which can then be accessed by the "APPINFO" token of the AppInfo connection property:

select row_value
from sa_split_list(connection_property('AppInfo'), ';')
where row_value like 'APPINFO=%'

So, AppInfo is both a connection property and an optional connection parameter... - possibly somewhat irritating...:)

(10 Apr '17, 09:38) Volker Barth
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

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "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:

×64
×28

question asked: 10 Apr '17, 06:23

question was seen: 1,509 times

last updated: 10 Apr '17, 09:40