3

Upgrading seven instances from SQL Server 2008R2 to 2014 via the ADMINISTRATOR command line using a configuration file. The upgrade runs fine but when I move on to upgrading the next instance I get the following error.

From : C:\Program Files\Microsoft SQL Server\120\Setup Bootstrap\Log\20150105_152519\Summary.txt

Error result: -2067919934
Result facility code: 1214
Result error code: 3010

Exception type: Microsoft.SqlServer.Configuration.RulesEngineExtension.RulesEngineRuleFailureException
    Message: 
        A computer restart is required. You must restart this computer before installing SQL Server.
    HResult : 0x84be0bc2
        FacilityCode : 1214 (4be)
        ErrorCode : 3010 (0bc2)
    Data: 
      SQL.Setup.FailureCategory = RuleViolationFailure
      DisableWatson = true
    Stack: 
        at Microsoft.SqlServer.Configuration.RulesEngineExtension.RunRulesAction.ExecuteAction(String actionId)
        at Microsoft.SqlServer.Chainer.Infrastructure.Action.Execute(String actionId, TextWriter errorStream)
        at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.<>c__DisplayClasse.<ExecuteActionWithRetryHelper>b__b()
        at Microsoft.SqlServer.Setup.Chainer.Workflow.ActionInvocation.ExecuteActionHelper(ActionWorker workerDelegate)

I am able to continue after restarting, but something is very wrong if I have to restart after every upgrade. Can someone help me figure out, why I have to restart after upgrading every instance?

Here is the configuration file I'm using

INSTANCENAME="SOME_INSTANCE"
SQMREPORTING="False"
INSTANCEID="SOME_INSTANCE"
IACCEPTSQLSERVERLICENSETERMS="True"
ACTION="Upgrade"
ENU="True"
QUIET="True"
UpdateEnabled="True"
ERRORREPORTING="False"
USEMICROSOFTUPDATE="False"
UpdateSource="MU"
HELP="False"
INDICATEPROGRESS="False"
X86="False"
FAILOVERCLUSTERROLLOWNERSHIP="2"

Here is the command being used to upgrade :

setup.exe  /ConfigurationFile="Confguration_Upgrade.ini"

Update

More information from detail.txt

# (01) 2015-01-05 15:45:00 Slp: File operations are pending for "SQLCTR100.DLL"
# (01) 2015-01-05 15:45:00 Slp: File operations are pending for "SQLAGENTCTR100.DLL"
# (01) 2015-01-05 15:45:00 Slp: Rule 'RebootRequiredCheck' results: IsRebootNotRequired=False
# (01) 2015-01-05 15:45:00 Slp: Evaluating rule : RebootRequiredCheck
# (01) 2015-01-05 15:45:00 Slp: Rule running on machine: G06SQL001
# (01) 2015-01-05 15:45:00 Slp: Rule evaluation done : Failed
# (01) 2015-01-05 15:45:00 Slp: Rule evaluation message: A computer restart is required. You must restart this computer before installing SQL Server.
  • 3
    You may be able to bypass this by editing the registry value for PendingFileRenameOperations, but I'd do so at your own risk. – LowlyDBA Jan 5 '15 at 16:37
  • 5
    That advice was an early, and risky, workaround for a SQL Server 2008 issue. The supported solution is here: support.microsoft.com/kb/2008982 – Paul White Jan 5 '15 at 16:59
  • Hello @PaulWhite, thanks for the KB article. It was thanks to Max that I did start looking in the right direction and did find the offending file. – Craig Efrein Jan 5 '15 at 18:23
  • The KB link is as much for future visitors as anything. If I were more expert on the topic, I'd add an answer. Perhaps I will anyway :) – Paul White Jan 5 '15 at 18:38
-3


Hi Craig,

I may have a solution for you.
You should go to the registry and delete the registry key below: HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations

I've created PS scripts for upgrading SQL Server Instances.

Here an example:


# Select the source path and the Instance name. # Launch the script on a PowerShell console as Administrator. $SourcePath = "\\MYNAS\Sources\SQL Server 2014" $InstanceName = "MYINSTANCE1" Set-Location $SourcePath $exists = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager" -Name "PendingFileRenameOperations" -ErrorAction SilentlyContinue If (($exists -ne $null) -and ($exists.Length -ne 0)) { Remove-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager" -Name "PendingFileRenameOperations" } .\setup.exe /ACTION="Upgrade" /Q /INDICATEPROGRESS="True" /INSTANCENAME=$InstanceName /IACCEPTSQLSERVERLICENSETERMS $InstanceName = "MYINSTANCE2" Set-Location $SourcePath $exists = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager" -Name "PendingFileRenameOperations" -ErrorAction SilentlyContinue If (($exists -ne $null) -and ($exists.Length -ne 0)) { Remove-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager" -Name "PendingFileRenameOperations" } .\setup.exe /ACTION="Upgrade" /Q /INDICATEPROGRESS="True" /INSTANCENAME=$InstanceName /IACCEPTSQLSERVERLICENSETERMS

I hope this will help.

Max.

  • hello Maxime, your script allowed me to continue the upgrades without rebooting. I found the corresponding entries in the detail.txt file that explain why the reboot was necessary – Craig Efrein Jan 5 '15 at 16:41
  • 5
    You should be aware removing that registry key can have wide ranging consequences. It is not only used by SQL Server, but by any installer process that needs to replace files that are in-use. This includes things like Windows Update, etc. – Max Vernon Jan 5 '15 at 17:02
  • Thank you @MaxVernon, I have switched to using /SkipRules=RebootRequiredCheck for the installations and upgrades. – Craig Efrein Jan 6 '15 at 8:48
  • Indeed, it sounds better. Can you confirm it works perfectly? However, I'm surprised not seeing this option in the Microsoft reference page: msdn.microsoft.com/en-us/library/ms144259.aspx#Install – Maxime Daniou Jan 6 '15 at 9:23

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.