none
Unable to upgrade SQL Server 2008 r2 cluster to SQL Server 2012 SP1, failes with Failed to retrieve data for this request

    Question

  • I don't really understand why it would fail. Sometimes when I start the setup process it is fine, next time it doesn't work. I'm not comfortable continuing with the upgrade it being flaky like this. I'm just wondering what could cause this? Here's the output from the logs:

    (01) 2013-09-21 13:40:18 Slp: Running Action: RunRemoteDiscoveryAction
    (01) 2013-09-21 13:40:18 Slp: Running discovery on local machine
    (01) 2013-09-21 13:40:20 Slp: Discovery on local machine is complete
    (01) 2013-09-21 13:40:20 Slp: Running discovery on remote machine: PC1N1
    (01) 2013-09-21 13:41:31 Slp: Discovery on PC1N1 failed due to exception
    (01) 2013-09-21 13:41:31 Slp: Microsoft.SqlServer.Management.Sdk.Sfc.EnumeratorException: Failed to retrieve data for this request. ---> Microsoft.SqlServer.Configuration.Sco.SqlRegistryException: The handle is invalid.

       at Microsoft.SqlServer.Configuration.Sco.InternalRegistryKey.OpenSubKey(String subkey, RegistryAccess requestedAccess)
       at Microsoft.SqlServer.Configuration.Sco.SqlRegistryKey.OpenSubKey(String subkey, RegistryAccess requestedAccess)
       at Microsoft.SqlServer.Discovery.DiscoveryUtils.GetLocalMachineSubKey(ServiceContainer ctx, String machineName, RegistryView regView, String regPath, RegistryAccess registryAccess)
       at Microsoft.SqlServer.Discovery.DiscoveryEnumObject.GetInstanceHiveForSqk2kInstance(String machineName, String instanceName, RegistryView regView)
       at Microsoft.SqlServer.Discovery.DiscoveryEnumObject.GetSql2kMsiInstanceListInHive(String machineName, RegistryView regView)
       at Microsoft.SqlServer.Discovery.DiscoveryEnumObject.LoadSql2kInstanceList(String machineName)
       at Microsoft.SqlServer.Discovery.Product.GetData(EnumResult erParent)
       at Microsoft.SqlServer.Management.Sdk.Sfc.Environment.GetData()
       at Microsoft.SqlServer.Management.Sdk.Sfc.Environment.GetData(Request req, Object ci)
       at Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.GetData(Object connectionInfo, Request request)
       at Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.Process(Object connectionInfo, Request request)
       --- End of inner exception stack trace ---
       at Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.Process(Object connectionInfo, Request request)
       at Microsoft.SqlServer.Chainer.Infrastructure.SqlDiscoveryDatastoreInterface.ProcessDTbl(DataTable dt, Int32 level)
       at Microsoft.SqlServer.Chainer.Infrastructure.SqlDiscoveryDatastoreInterface.CollectSqlDiscoveryData(String machineName)
       at Microsoft.SqlServer.Chainer.Infrastructure.SqlDiscoveryDatastoreInterface.CollectDiscoveryData(String machineName)
       at Microsoft.SqlServer.Chainer.Infrastructure.SqlDiscoveryDatastoreInterface.LoadData(IEnumerable`1 machineNames, String discoveryDocRootPath, String clusterDiscoveryDocRootPath)
    (01) 2013-09-21 13:41:31 Slp: Error: Action "Microsoft.SqlServer.Configuration.SetupExtension.RunDiscoveryAction" threw an exception during execution.
    (01) 2013-09-21 13:41:31 Slp: Microsoft.SqlServer.Setup.Chainer.Workflow.ActionExecutionException: Failed to retrieve data for this request. ---> Microsoft.SqlServer.Management.Sdk.Sfc.EnumeratorException: Failed to retrieve data for this request. ---> Microsoft.SqlServer.Configuration.Sco.SqlRegistryException: The handle is invalid.

    (01) 2013-09-21 13:41:31 Slp: Exception type: Microsoft.SqlServer.Management.Sdk.Sfc.EnumeratorException
    (01) 2013-09-21 13:41:31 Slp:     Message: 
    (01) 2013-09-21 13:41:31 Slp:         Failed to retrieve data for this request.
    (01) 2013-09-21 13:41:31 Slp:     HResult : 0x80131500
    (01) 2013-09-21 13:41:31 Slp:     Data: 
    (01) 2013-09-21 13:41:31 Slp:       HelpLink.ProdName = Microsoft SQL Server
    (01) 2013-09-21 13:41:31 Slp:       HelpLink.BaseHelpUrl = http://go.microsoft.com/fwlink
    (01) 2013-09-21 13:41:31 Slp:       HelpLink.LinkId = 20476
    (01) 2013-09-21 13:41:31 Slp:     Stack: 
    (01) 2013-09-21 13:41:31 Slp:         at Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.Process(Object connectionInfo, Request request)
    (01) 2013-09-21 13:41:31 Slp:         at Microsoft.SqlServer.Chainer.Infrastructure.SqlDiscoveryDatastoreInterface.ProcessDTbl(DataTable dt, Int32 level)
    (01) 2013-09-21 13:41:31 Slp:         at Microsoft.SqlServer.Chainer.Infrastructure.SqlDiscoveryDatastoreInterface.CollectSqlDiscoveryData(String machineName)
    (01) 2013-09-21 13:41:31 Slp:         at Microsoft.SqlServer.Chainer.Infrastructure.SqlDiscoveryDatastoreInterface.CollectDiscoveryData(String machineName)
    (01) 2013-09-21 13:41:31 Slp:         at Microsoft.SqlServer.Chainer.Infrastructure.SqlDiscoveryDatastoreInterface.LoadData(IEnumerable`1 machineNames, String discoveryDocRootPath, String clusterDiscoveryDocRootPath)
    (01) 2013-09-21 13:41:31 Slp:         at Microsoft.SqlServer.Configuration.SetupExtension.RunDiscoveryAction.ExecuteAction(String actionId)
    (01) 2013-09-21 13:41:31 Slp:         at Microsoft.SqlServer.Chainer.Infrastructure.Action.Execute(String actionId, TextWriter errorStream)
    (01) 2013-09-21 13:41:31 Slp:         at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.ExecuteActionHelper(TextWriter statusStream, ISequencedAction actionToRun, ServiceContainer context)
    (01) 2013-09-21 13:41:31 Slp:     Inner exception type: Microsoft.SqlServer.Configuration.Sco.SqlRegistryException
    (01) 2013-09-21 13:41:31 Slp:         Message: 
    (01) 2013-09-21 13:41:31 Slp:                 The handle is invalid.
    (01) 2013-09-21 13:41:31 Slp:                 
    (01) 2013-09-21 13:41:31 Slp:         HResult : 0x84d10006
    (01) 2013-09-21 13:41:31 Slp:                 FacilityCode : 1233 (4d1)
    (01) 2013-09-21 13:41:31 Slp:                 ErrorCode : 6 (0006)
    (01) 2013-09-21 13:41:31 Slp:         Data: 
    (01) 2013-09-21 13:41:31 Slp:           WatsonData = Microsoft.SqlServer.Configuration.Sco.SqlRegistryException@Win32Error

    Saturday, September 21, 2013 6:47 PM

Answers

  • I just want to add that changing the Remote Registry Service account to run as a Network Service on both of the cluster nodes appears to solve the problem. Still not sure why it would make a difference, never had to do it on any other test cluster. Also it doesn't explain why it would work sporadically with the service running as Local Service.
    • Marked as answer by EugeneKib Friday, October 04, 2013 3:37 PM
    Friday, October 04, 2013 2:16 PM

All replies

  • One interesting fact is, setups always works without an issue when I run it on an active node.
    Saturday, September 21, 2013 7:15 PM
  • Hi,

    Is remote registry service running on PC1N1? If yes, with what service account?


    This posting is provided “AS IS” with no warranties, and confers no rights.

    If this reply answers your question, please mark it as Answered for others to find it easily.
    If this reply help you resolving the problem, please vote the post as Helpful.

    Sunday, September 22, 2013 4:35 AM
  • Hello,

    Please run the cluster validation wizard at the operating system level and let us know any errors you may find.

    http://technet.microsoft.com/en-us/library/cc732035(v=WS.10).aspx  

    Hope this helps.

    Regards,

    Alberto Morillo
    SQLCoffee.com

    Sunday, September 22, 2013 5:25 AM
  • It is running on both servers with Local Service account.
    Sunday, September 22, 2013 8:54 PM
  • Ran the cluster validation, no errors, a few warnings but nothing significant.
    Sunday, September 22, 2013 8:55 PM
  • Hello,
    This could be an issue related to permissions. Maybe the Windows account you are using to install SQL Server does not have access to the following registry keys:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer

    Please verify you have Full Control access to those keys.

    Verify the Windows account you are using to install has the following user rights too:

    http://support.microsoft.com/kb/2000257

    Hope this helps.

    Regards,
    Alberto Morillo
    SQLCoffee.com


    Monday, September 23, 2013 3:49 PM
  • We looked at the registry permissions and they look fine. We even tried Domain Admins with full rights to everything try running the System Configuration Checker to no avail.
    • Edited by EugeneKib Monday, September 23, 2013 6:16 PM
    Monday, September 23, 2013 4:52 PM
  • We looked at the registry permissions and they look fine. We even tried Domain Admins with full rights to everything try running the System Configuration Checker to no avail.
    On further review, after trying the System Configuration Checker with a process monitor running, it does look like there's a security access denied to a registry on a remote host. We check all the permissions, and they look fine. Access is denied even if a domain admin tries to run the install. What else could that be? How can we find out what credentials the SCC is using to try to connect to a remote host?
    Tuesday, September 24, 2013 1:52 PM
  • We looked at the registry permissions and they look fine. We even tried Domain Admins with full rights to everything try running the System Configuration Checker to no avail.

    On further review, after trying the System Configuration Checker with a process monitor running, it does look like there's a security access denied to a registry on a remote host. We check all the permissions, and they look fine. Access is denied even if a domain admin tries to run the install. What else could that be? How can we find out what credentials the SCC is using to try to connect to a remote host?

    In the procmon file (I hope you saved in .pml format) Right click on the column name and add "user" column, it will show you which user it was trying to connect thru for that particular access denied. If problem, please email me the pml file (check my blog for email address)

    Probably that's a network service account? Guessing..


    This posting is provided “AS IS” with no warranties, and confers no rights.

    If this reply answers your question, please mark it as Answered for others to find it easily.
    If this reply help you resolving the problem, please vote the post as Helpful.


    • Edited by Prashant Jha Tuesday, September 24, 2013 2:07 PM
    Tuesday, September 24, 2013 2:06 PM
  • Here's the output from process monitor, I confirmed it was running under my domain account, which should have full access rights to PC1N1

    9:11:12.5157294 AM ScenarioEngine.exe 5852 SetDispositionInformationFile \\PC1N1\C$\Windows\System32\HKEY_LOCAL_MACHINE_SOFTWARE_Microsoft_Microsoft SQL Server_Wow6464.registry{5419089e-24a6-11e3-9d41-d4ae529186d6}.TM.blf ACCESS DENIED Delete: True
    9:11:12.5315524 AM ScenarioEngine.exe 5852 SetDispositionInformationFile \\PC1N1\C$\Windows\System32\HKEY_LOCAL_MACHINE_SOFTWARE_Microsoft_Microsoft SQL Server_Wow6464.registry{8b2c4bc5-2513-11e3-bc6a-90b11c0ff90c}.TM.blf ACCESS DENIED Delete: True
    9:11:12.5876377 AM ScenarioEngine.exe 5852 SetBasicInformationFile \\PC1N1\C$\Windows\System32\HKEY_LOCAL_MACHINE_SOFTWARE_Microsoft_Microsoft SQL Server_Wow6464.registry ACCESS DENIED CreationTime: 9/24/2013 9:10:03 AM, LastAccessTime: 9/24/2013 9:11:12 AM, LastWriteTime: 9/24/2013 9:10:03 AM, ChangeTime: 9/24/2013 9:10:03 AM, FileAttributes: A

    Tuesday, September 24, 2013 2:17 PM
  • Do you have the pml file with you?


    This posting is provided “AS IS” with no warranties, and confers no rights.

    If this reply answers your question, please mark it as Answered for others to find it easily.
    If this reply help you resolving the problem, please vote the post as Helpful.

    Tuesday, September 24, 2013 2:19 PM
  • Just emailed it to you.
    Tuesday, September 24, 2013 2:24 PM
  • GOt it. Thanks.

    It tells me the Access denied is for this user account 

    

    That might be your domain account with admin right, but can you still pls check the permission on reported registry keys. And grant them explicitly if it is not there.


    This posting is provided “AS IS” with no warranties, and confers no rights.

    If this reply answers your question, please mark it as Answered for others to find it easily.
    If this reply help you resolving the problem, please vote the post as Helpful.

    Tuesday, September 24, 2013 2:42 PM
  • We granted permissions explicitly on those keys on both servers. We just tested it on our test cluster and process monitor still reports access denied on those registry keys, however the setup continues. We weird part is, it happens intermittently. One time it could work, you log off, log back in, and it wouldn't. 
    Tuesday, September 24, 2013 3:07 PM
  • That's really weird. If that's a test machine or a new box, you may try to reset the registry permissions.

    secedit /configure /cfg %windir%\inf\defltbase.inf /db defltbase.sdb /verbose /areas regkeys

    Ref: http://support.microsoft.com/kb/313222 



    This posting is provided “AS IS” with no warranties, and confers no rights.

    If this reply answers your question, please mark it as Answered for others to find it easily.
    If this reply help you resolving the problem, please vote the post as Helpful.

    Wednesday, September 25, 2013 2:41 AM
  • Unfortunately it is a live production box. I tried running Systems Configuration Checker from a SQL Server 2008 R2 installation media, and it passes all the time.
    Thursday, September 26, 2013 1:06 PM
  • I just want to add that changing the Remote Registry Service account to run as a Network Service on both of the cluster nodes appears to solve the problem. Still not sure why it would make a difference, never had to do it on any other test cluster. Also it doesn't explain why it would work sporadically with the service running as Local Service.
    • Marked as answer by EugeneKib Friday, October 04, 2013 3:37 PM
    Friday, October 04, 2013 2:16 PM