Basically, the SAP Cloud Platform, SAP HANA service gives you cloud instances of SAP HANA on-demand, that are managed by SAP. It’s great if you want to stand up HANA quickly and only want to pay for what you use. You can read more about HaaS in a blog here.
For Esri customers who are on ArcGIS Enterprise 10.7.1 but don’t yet have HANA, HaaS offers a quick way to stand up a cloud instance of HANA on-demand. You can get started right away exploring the advantages of ArcGIS on HANA.
While working as part of a team with Esri on this effort, I learned some things which can save you time in getting ArcGIS Enterprise and HaaS connected.
Many organizations restrict access from their intranet to the Internet especially for ports other than 80 or 443. Network administrators may take the FQDN for the HaaS endpoint, translate that to an IP address and whitelist the IP address and port (typically 2xxxx). However, the IP address for the endpoint can change and the whitelist entry becomes invalid. This is where WebSockets come in – it allows secure communication with the HaaS instance over port 80 which is usually accessible without a whitelist entry.
Version 2.3.106 of the HANA Client and later includes support for WebSockets. On Windows, you can find out the version of your HANA client by starting the ODBC Manager (64 bit) and creating a data source. Look for the version in the list of drivers:
As you can see, I have the right version: 2.03.106.44071. If you don’t, you can obtain it here: https://tools.hana.ondemand.com/#hanatools
Once you’ve installed 2.03.106 or later, how do you specify a WebSockets connection in the ODBC manager? Before I answer this question, please take a look at this great blog on ODBC connectivity to HaaS by Tom Slee. It offers more in depth detail which you will find helpful.
Let’s start with how a regular connection to HaaS is created…
This is the SAP HANA Service Dashboard which has two key pieces of information. They are the ID and the Endpoints.
In the ODBC manager, you create a new DSN as shown here. You would use the Direct SQL Connectivity Endpoint from the Service Dashboard shown above – this is the FQDN of the HaaS endpoint and looks like this:
zeus.hana.prod.us-east-1.whitney.dbaas.ondemand.com:2xxxx (real port masked)
Click the Settings… button and when the Setup dialog appears, check the “Connect using SSL” and set the special property SPATIALTYPES to 1.
To create an ODBC connection with WebSockets, you need an additional piece of information – the Service ID (the masked out long hex number displayed in the ODBC Property Setup below) as displayed on the SAP HANA Services Dashboard webpage.
You also need to create the ODBC SDN differently. For starters, you use the Web Socket Connectivity Endpoint from the HANA Services Dashboard (which uses port 80 instead of 2xxxx) and looks like this:
Notice the ODBC Driver Version number in the dialog below which is the minimum version you need.
In the settings dialog, you can specify a number of properties as shown below depending on your needs. Your IT department can advise you if you have a proxy and what the correct settings are. If you don’t require a proxy to connect to the Internet, don’t set the PROXY_PORT or PROXY_HOST.
- PROXY_PORT (if set, typically set to 8080)
- PROXY_HOST (if set, typically set to “proxy”)
- SPATIALTYPES (always set to 1).
- WEBSOCKETURL – To set the WEBSOCKETURL property, you’ll need that long hex string for your HaaS instance from the Services Dashboard shown above. Make sure you precede the hex number with “/service/”.
Also make sure you check “Connect using SSL” – this is the most common reason why a connection can’t be established. When you’ve created all the properties and checked the SSL box, the Advanced Setup dialog will look like something like this:
Once you’ve specified the properties, click OK and always test the connection to verify it works!
Since ArcGIS Pro simply uses the ODBC connection, you’re all setup to use ArcGIS Pro 2.4 and later and/or ArcGIS Enterprise 10.7.x to access your HaaS instance.
I will look at some deployment patterns that cover on-prem, cloud and hybrid scenarios in a later post.