0

We were recently asked to remove unsupported software from our servers and the list included SQL 2012 Native Client. Version 11 was installed, so we removed it from test & dev servers without any issues. When it came to the Live servers which are HA Availability Groups built on Windows Clustering, there were no issues... until we ran Failover Cluster Manager, then the cluster went down. Has anyone experienced similar issues? Is anyone aware of this being an issue? I have not seen any documentation from Microsoft, but it is clear from our subsequent testing that removing SQL 2012 Native Client breaks Failover Cluster Manager. SQL is running on 2017 and the OS is Windows Server 2016.

2
  • 2
    Is there anyting relevant in cluster logs?
    – vonPryz
    Nov 1, 2022 at 14:23
  • The error count was going up ridiculously fast and the log was unusable. My only option was to do a restore, so nothing to see unfortunately.
    – FreedToFly
    Nov 5, 2022 at 15:32

1 Answer 1

1

I have not seen any documentation from Microsoft, but it is clear from our subsequent testing that removing SQL 2012 Native Client breaks Failover Cluster Manager.

SQL Server 2022 might have an announcement around this very topic (removing reliance upon SQLNCLI11). Also as an FYI, if a MS product requires an older version of something, that something is technically supported as part of the product.

Is anyone aware of issues where uninstalling SQL 2012 Native Client has broken Failover Clustering?

Yes, it is required for now (see below).

Technical Repro

If you take a BID trace 1 on the server and specifically look for the RHS process 2 (which hosts the cluster resource specific DLLs [hadrres.dll for AGs and sqsrvres.dll for FCI]) which connects to SQL Server (easily found from the DMVs 2) you'll notice that it does specify SQLNCLI11 as the driver [3].

1: BID trace output showing use where (1) is the library used, (2) is the process id, and (3) is the plain text connection string used by the caller. Human Readable BID Trace Output

2: Finding the process is generally easy if you have the data from the time (hard to go back in time, if not impossible). Since we know that clustering is running as system, we can use that to find it in the sessions, really we want to know the process id which this was nice enough to fill in for us.

Finding the RHS process in the DMV

3: Going back to the picture in #1, notice the process_id (2) is in hex, 7412 = 0x1CF4 and thus we know this is the information we were looking to obtain.

1
  • That is very interesting and very helpful. Can't thank you enough! We were going to do some testing on Server 2022 and SQL 2019, but it seems that would still need Native Client. We would need SQL 2022, potentially, if MS announce that Native Client is no longer required.
    – FreedToFly
    Nov 5, 2022 at 15:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.