Here is one of email which I received from one of my clients where he mentioned that he was unable to bring SQL Online.
Pinal,
I need assistance in getting the failed SQL Server resource online on the node named “SQLDBN01” for the Cluster named “DBCLUSTER01 “.
I checked the event log and have all generic messages. Do you have any expert trick?
Thanks!
This was one of the shortest email which I have ever received, asking for assistance. I have sent shortest reply.
<Reply>Please try SQL SERVER – Steps to Generate Windows Cluster Log? </Reply>
There shared cluster log and below is the relevant section.
INFO [RES] SQL Server : [sqsrvres] Dependency expression for resource ‘SQL Network Name (LGA-DB1)’ is ‘([a15276ac-8bf2-d013-8ab5-4e09eb594606])’
ERR [RES] SQL Server : [sqsrvres] Worker Thread (C8107C10): Failed to retrieve the ftdata root registry value (hr = 2147942402, last error = 0). Full-text upgrade will be skipped.
WARN [RES] SQL Server : [sqsrvres] Worker Thread (C8107C10): DoSQLDataRootApplyACL : Failed to create directory tree at SQLDataRoot.
ERR [RES] SQL Server : [sqsrvres] SQL Cluster shared data upgrade failed with error 0 (worker retval = 3). Please contact customer support
ERR [RES] SQL Server : [sqsrvres] Failed to prepare environment for online. See previous message for detail. Please contact customer support
INFO [RES] SQL Server : [sqsrvres] SQL Server resource state is changed from ‘ClusterResourceOnlinePending’ to ‘ClusterResourceFailed’
ERR [RHS] Online for resource SQL Server failed.
Here are the warning and errors
- Failed to retrieve the ftdata root registry value (hr = 2147942402, last error = 0). Full-text upgrade will be skipped.
- DoSQLDataRootApplyACL : Failed to create directory tree at SQLDataRoot.
- SQL Server <SQL Server>: [sqsrvres] SQL Cluster shared data upgrade failed with error 0 (worker retval = 3). Please contact customer support
SOLUTION/WORKAROUND
I asked them to check registry values at
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11.MSSQLSERVER\Setup
For SQLDataRoot and found that they had a drive M earlier, which is replaced by drive O now. In the registry there were having reference to old drive and hence the problem.
Once they changed the value in registry to correct location, failover worked like a charm.
If it still doesn’t work for you, generate cluster log again and you should find some more folders errors. Check for the reference in registry key and you should be able to fix it.
Reference: Pinal Dave (http://blog.sqlauthority.com)
First appeared on SQL SERVER – Unable to Bring SQL Online – DoSQLDataRootApplyACL : Failed to Create Directory Tree at SQLDataRoot