on 2013 Dec 05 8:37 PM
I am migrating our database from version 9 to version 16.
It seems there is something wrong with the authentication to the remote servers from SQL Anywhere 16.
I created a test case of creating a brand new Remote Server on both platforms ( v9 and v16 ).
On v9, each time I attempted the connection, I got an appropriate message from the MySQL ODBC driver about invalid login, until I supplied the correct Remote MySQL login and password.
However, on v16, whether I did or did NOT specify the remote SQL authentication, it reported the same error that 'dbo@....' failed to connect. The Remote login information is being ignored.
I have two sets of screen shots to demonstrate this - I hope I can attach them to my question!
Request clarification before answering.
Just a very wild guess:
The new v16 "extern_login_credentials" option may make a difference here. To cite:
Controls whether remote connections are attempted using the logged in user's extern login credentials or the effective user's extern login credentials.
In your case, it seems v9 and v16 behave differently in the way which user is used to connect remotely.
For the details, Karim has explained this in this FAQ - and note, a brand-new v16 db and a migrated v16 db seem to behave differently by default:
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Well .. your 'wild guess' was right on!
The obvious question is this:
Wouldn't logic dictate that the default functionality of a converted database with remote server to retain the ORIGINAL authentication method, to avoid all this?
Also, the documentation you referenced says that the option "takes effect immediately" .. which is not entirely true. I had to disconnect and then reconnect my Sybase Central connection in order to get the updated option. I guess when the docs say that it 'takes effect immediately' it means that the SERVER doesn't have to be restarted.
THANKS FOR YOUR HELP!
Well, feel free to accept that answer then:)
FWIW, I can't explain why the upgrade path was chosen that way (I'm just another customer) though Karim has discussed that in his cited answer.
However, I think w.r.t. invoker/definer, the remote access login logic was contrary to the procedure call logic in pre-v16 databases: For procedures, "definer" was the default, and for remote access, invoker was the "default". Therefore I guess the attempt to choose only one default as upgrade path (via ALTER DATABASE UPGRADE...SYSTEM PROCEDURE AS DEFINER has its limitations - possibly one would have needed a further ALTER DATABASE UPGRADE...REMOTE ACCESS AS DEFINER clause with a contrary default:)
You make a very good point.
If you take a pre-16 database and upgrade it, you should get the old behavior, and that is what happens so that's good.
If you create a brand new 16 database, you should get the new (and might I add more secure/correct) behavior; and again that is what happens so that's also good.
If you take a 16 database and upgrade it, you should get the same behavior as the pre-upgraded database; and again that is what happens so that's good.
If you take a 16 database and unload/reload it, you should get the same behavior as the pre-unloaded database; and again that is what happens so that's good.
If you take a pre-16 database and unload/reload it, you should get the old behaviour, but that is not what happens so you are correct, there is a bug here. I will open a bug report and we will try to get the problem resolved in a future SP.
User | Count |
---|---|
64 | |
8 | |
7 | |
7 | |
6 | |
5 | |
5 | |
4 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.