Sql-server – TLS1.0 disabled and 3rd party OLE DB use

sql serversql-server-2016

I'm provisioning a new server as part of which we have disabled TLS 1.0 and installed SQL Server Express 2016. I've then attempted to install a 3rd party application that is going to install a website and supporting DB etc. The first thing it does is test the connection to SQL and it returns the following error:

Connection Problem: [DBNETLIB][ConnectionOpen
(SECDoClientHandshake()).]SSL Security error

To attempt to work out the issue I created a UDL file on my desktop and reproduced this error when using the Provider Microsoft OLE DB Provider for SQL Server. The test worked fine for provider SQL Server Native Client 11.0 and I can also connect with SSMS.

Is there anyway I can force the 3rd party installer to use a different provider?
Is there anyway I can log what type of connection it is attempting?

Best Answer

See Does Microsoft OLE DB Provider for SQL Server support TLS 1.2 and the authoritative answer from Dan Guzman. He references a newer version of OLEDB that supports TLS 1.2, which can be downloaded at Microsoft® OLE DB Driver 18 for SQL Server®

And to specifically answer your questions, there is no way for us to know if the installer can be forced to use a different provider. It's certainly possible if it uses a connection string template that can be modified, but based on my experience I would say it's highly unlikely you'll be able to modify the installer to use a different provider.

As for logging what type of connection--see if the SQL Server error log contains any information when the failure occurs. You can also set up an extended event in SQL Server to capture information about logins (there is "Connection Tracking" template). The client_app_name field collected by "Connection Tracking" template will include the information that the client passes about the provider. This can sometimes be blank, though, as it depends on the client to set that information. Typically a provider will have that information included automatically unless the developer does something to override it.