Per a request from @flamber to file a summary bug for thread #5165
BACKGROUND
I was attempting to add an SQL Server database and began receiving timeout errors when attempting to save. I debugged by putting the jar file on a server which I knew had access to the database in question. After several abortive attempts, none of which worked, I happened to try something out of desperation.
- The Port Number shows a default of 1433.
- I hand entered 1433 into the Port Number field.
The problem was solved.
Results of investigation
It turns out that the problem lies in metabase/modules/drivers/sqlserver/resources/metabase-plugin.yaml at master · metabase/metabase · GitHub.
The YAML configuration shows:
connection-properties:
- host
- merge:
- port
- placeholder: 1433
When we compare this to the Oracle configuration file, we notice that placeholder
was used instead of default
:
connection-properties:
- host
- merge:
- port
- default: 1521
This is an issue because the visual appearance of both default
and placeholder
is identical which can easily lead to attempting to diagnose connectivity issues with SQL Server if the port number has not been physically entered.
Discussion on the thread indicates that the selection of placeholder
may have been to theoretically support dynamic ports on SQL Server. However, this is a non-starter because, according to @AndrewMBaines,:
I didn’t think the JDBC supported dynamic ports, just the ODBC that Metabase doesn’t use. I’ve had to change dynamic ports to fixed for SQL with Metabase.
Recommendation
My recommendation is to change the key from placeholder
to default
because there is no reason to confuse the user to support a protocol which the underlying framework doesn't support.