Per a request from @flamber to file a summary bug for thread #5165
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 https://github.com/metabase/metabase/blob/master/modules/drivers/sqlserver/resources/metabase-plugin.yaml.
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
connection-properties: - host - merge: - port - default: 1521
This is an issue because the visual appearance of both
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.
My recommendation is to change the key from
default because there is no reason to confuse the user to support a protocol which the underlying framework doesn’t support.