Foxhound ships as an unauthenticated SQL Anywhere 22.214.171.1246 database. It is up to the customer to provide a properly licensed copy of SQL Anywhere 11 to run the Foxhound database.
What SQL can I code in the DatabaseStart event to detect if the SQL Anywhere 11 software is an "OEM Edition"?
I want to do this to prevent Foxhound from running on such software.
Will the following work in V11? ...it's hard to experiment when one doesn't own any OEM software :)...
IF STRING ( ' ', PROPERTY ( 'ServerEdition' ), ' ' ) LIKE '% OEM %' OR STRING ( ' ', PROPERTY ( 'ServerEdition' ), ' ' ) LIKE '% AUTHENTICATED %' THEN ...
Starting with SA 11.0.1, you can use the Authenticated database and connection property. That should tell you if the connection could be authenticated or doesn't need to be authenticated (value 'Yes) or if the authentication failed ('No'). Note: It does not tell you if the database server is an OEM version (as I had formerly expected).
So, as your app don't try to authenticate, a value of 'No' should tell you that you are running on an OEM version and that there's need for a valid authentication string supplied by the user.
At least that's my understanding, I don't have an V12 OEM edition yet:)
I can confirm Breck's tests with my own non-OEM Servers on V 11.0.1 and V 12.
Unfortunately, the current docs are quite silent about the values of these properties on non-OEM servers. However, the original introduction of these new properties seems to be in 11.0.0 with EBF 1409 with the following readme quote:
Note: I remember to have asked for such properties because of problems with a wrongly authenticated connection on a V10 OEM server - something that was really hard to check without these properties. So I guess I have remembered this description. But I seem to be wrong (or the implementation in 11.0.1 and 12.0.0 has changed for non-OEM servers).
I guess these properties as implemented are not helpful for your case:(