Skip to Content
Author's profile photo Lars Breddemann

HANA quick note – checking my connections and using them securely …

based on revision 48 (SPS 5) of SAP HANA Studio and Database

I just browsed throught the updated SAP HANA Developer Guide, SPS 05, Ver. 1.1, 21.12.2012 (really that date? not even 12.12.12? πŸ™‚ ) and found something pretty nice in there for ODBC and JDBC users.

By the way: meanwhile (as of SPS 5) three of the files from the HANA documentation website have been included into the local eclipse help.

This means:no more back and forth between the PDF and the HANA studio as well as ‘F1’ help in the studio.

As you can see, the SAP HANA Administration Guide, the SAP HANA Developer Guide and the SAP HANA SQLScript Reference are now ‘on board‘.


While I’ve no idea on when the SQL reference will follow, I still use the web browser integration until then.

Let’s see the nuggets in there!

A common task is to check the database connectivity via ODBC after a user workstation has been set up.

This is easy to do with the SAP HANA client program odbcreg.exe (to be found in the installation folder of the SAP HANA client software).

By using the command odbcreg.exe -t hdbodbc the driver is loaded and a logon dialog window is opened.

A nice giveaway is that the exact driver software version information can be found in the title bar of this dialog window.

You can now either type in the usual SAP HANA logon credentials (hostname, port number, username and password) or, and this is really nice,  you can use an entry from the secure HDBUSERSTORE.

I’ve mentioned the HDBUSERSTORE earlier and really like how it makes getting access to the SAP HANA server seamless.

So, instead of filling out the logon form you can just enter @<KEY> to have ODBC use the HDBUSERSTORE-entry named <KEY>.

In my example I used the entry HANLARS to connect to my test instance HAN.


Once odbcreg.exe got the logon data it tries to connect to the SAP HANA instance and runs a command like

   SELECT now() FROM dummy;

(for which you see the output as well in the command line window).

As no special authorizations are required for this command, running it means:

    if you get a result, that’s good.You’re in πŸ™‚ !


    if you don’t get a result, well, don’t go looking for some “missing” authorizations on SAP HANA level.

    In that case, the client didn’t even get through to the SAP HANA server.


By now you may wonder, why the heck I’m so happy about this HDBUSERSTORE feature in ODBC.

After all, most often people don’t make connection tests, but need to logon to the database to actually do something with it.

Something you would do with ODBC… like connecting Excel or R or PYTHON or…

Well, guess what, this way of providing a link to the HDBUSERSTORE also works with any ODBC connection string!

As an example I use the same HDBUSERSTORE entry in R Studio, the IDE for R development, to re-run one of Blags test cases:


Isn’t that nice?

No need to type in the server hostname and port any more.

No insecure coding due to hard coded username/password information any longer.

PLUS: you can use the very same code without change for multiple users and workstations.

All you have to do is to setup the HDBUSERSTORE entry you refer to for the user that should run your code.

As promised above, there’s also something in here for JDBC users.

Although unfortunately JDBC cannot make use of the HDBUSERSTORE by its very design, the JDBC driver .jar-file actually can do more than one might expect at first.

Besides printing out its own version number, the JDBC driver also has a little connection test on board, very similar to the ODBC driver.

By running

C:\Program Files\sap\hdbclient>java -jar ngdbc.jar –version

package, SAP In-Memory Database JDBC Driver, SAP AG, 1.00.48.Build 0372847-1510 (Commit-Hash: not set)

we get the exact version information.

And by running

C:\Program Files\sap\hdbclient>java -jar ngdbc.jar -n <hostname>:30015 -u <username>,<password>

Now I’m successfully connected

|            |


| 42         |

we not only get a connection test, but also the Answer to the Ultimate Question of Life, The Universe, and Everything

AWESOME, I say πŸ™‚

Assigned Tags

      You must be Logged on to comment or reply to a post.
      Author's profile photo Alvaro Tejada Galindo
      Alvaro Tejada Galindo


      This is awesome! πŸ˜€ Will try it out as soon as I can... πŸ™‚ Happy day for developers πŸ˜‰



      Author's profile photo Vladislav Volodin
      Vladislav Volodin

      Good article. the interesting thing is that JDBC driver should return you "connect test" caption, but it returns an empty string πŸ™

      Author's profile photo Lars Breddemann
      Lars Breddemann
      Blog Post Author

      Thanks Vladislav!

      About the JDBC driver ... can you post what you did to get the empty string?

      Author's profile photo Vladislav Volodin
      Vladislav Volodin

      I simply enabled tracing of JDBC, and saw the following request:

      Select top 1 42 as "connect test" from users

      I did not dig the JAVA code deeply, but it seems that in the code the caption is not retrieved properly.

      Author's profile photo Lars Breddemann
      Lars Breddemann
      Blog Post Author

      I see what you mean.

      Actually this is not an error.

      The internal helper method that prints the "Now I'm successfully connected" message simply used ResultSetMetaData.getColumnName() to retrieve the header of a column that should be printed.

      Since this is a computed column in this case (constant string literal) getColumnName() needs to be empty. Instead the data could be found in getColumnDisplayName().

      And after all: this is really just a little handy add-on to the driver to allow for a super-quick no-effort-connection test.

      It really is provided as a take-it-or-leave-it approach πŸ˜‰ .

      - Lars

      Author's profile photo Kumar Mayuresh
      Kumar Mayuresh


      Great blog, will definitively try, and will get back to you in case of trouble πŸ™‚


      IF it works then its really a "Happy day for developers and even for users" πŸ™‚



      Author's profile photo Kumar Mayuresh
      Kumar Mayuresh


      Thanks for the post... I successfully achieved that.

      Looking for more.. πŸ™‚ Keep writing



      Author's profile photo Tom Cenens
      Tom Cenens

      Hi Lars

      Nice blog post πŸ™‚ . Came in handy for me while playing around on Amazon AWS.

      Best regards


      Author's profile photo Lars Breddemann
      Lars Breddemann
      Blog Post Author

      Glad to hear the old bits are still useful πŸ™‚

      Cheers, Lars

      Author's profile photo Rama Shankar
      Rama Shankar

      Thanks Lars! πŸ™‚

      Author's profile photo Former Member
      Former Member

      Hi Lars,

      thanks for this good article. It works fine on my systemΒ  until I like to connect in RStudio. Can you share more information about the syntax to connect?

      I used the following syntax, where RH8 is my DSN and RH8Connect is my key I generated with hdbuserstore


      Many thanks for your support and all the best


      Author's profile photo Amir Rizvi
      Amir Rizvi

      Hello Lars,

      It would be great if you could share the correct syntax to use the hdbuserstore key from RStudio. At this time I am looking to use the key to open a ODBC connection using ConnectionContext from package.