Answered 2008 R2 SP1 update install

  • Thursday, December 22, 2011 8:43 PM
     
     

    My application installs SQL Server 2008 Express as one of its prerequisites. It has been using SQL Server 2008 R2 for some time now, but I've decided to begin shipping R2 Service Pack 1. The problem occurs on machines where the application has previously been installed and 2008 R2 is already present. The setup program detects that it should upgrade SQL Server, but the SP1 installation file crashes. I'm installing the 32- or 64-bit (complete) files from this page:

    http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=26729

    Please advise how to handle this situation which is likely to affect about 50% of my installs.

    Paul T.

     

All Replies

  • Friday, December 23, 2011 9:19 AM
    Moderator
     
     

    Hi Paul,

    Ideally you could upgrade your SQL Server 2008 Express to SQL Server 2008 R2 with SP1 by the installation file above.Please meet all the prerequisites through this online article before installation.

    As the installation of SQL Server 2008 R2 express crashed, could you please post the error logs 'summary.txt' and 'detail.txt' under '\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log'? If the log files are too big to post here,please upload them to a shared folder like 'Skydriver'.


    Best Regards,
    Peja

    Please remember to click "Mark as Answer" on the post that helps you, and to click "Unmark as Answer" if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.
  • Friday, December 23, 2011 9:21 AM
     
     
    Can you please check the installation log file for any errors file location here http://msdn.microsoft.com/en-us/library/ms143702.aspx

    http://uk.linkedin.com/in/ramjaddu
  • Monday, December 26, 2011 6:43 PM
     
     

    Peja,

    Thanks for the message.

    I should probably rephrase. It "fails to install" indicating "nothing to upgrade" when I try to install SP1 over the top of R2. "Crash" isn't the right word.

    I don't think this is a prerequisite problem unless SP1 adds some prerequisties to R2. This is a machine that accepted the R2 installation just fine and should be way beyond the minimum requirements (3.5GHz dual core process, 4GB of RAM, 200GB of free disk space or so).

    The machine is isolated from the network and our office is closed today, but I'll send some log files Tuesday for you.

    Paul T.

  • Tuesday, December 27, 2011 2:41 AM
    Moderator
     
      Has Code

    @Paul,

    Please also post back the result of query:

     

    select @@VERSION
    


     


    Best Regards,
    Peja

    Please remember to click "Mark as Answer" on the post that helps you, and to click "Unmark as Answer" if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.
  • Tuesday, December 27, 2011 4:21 AM
     
     

    That's a bit more difficult in this case than a full SQL Server install (remember, no Management Studio, etc.), but I'll attempt to get the information. I know that it's straight off-the-shelf SQL Server 2008 R2, though.

    Paul T.

  • Tuesday, December 27, 2011 2:48 PM
     
     

    I used the installer to get the current version and component list:

    Microsoft SQL Server 2008 R2 SP1 Setup Discovery Report

    Product Instance Instance ID Feature Language Edition Version Clustered
    Microsoft SQL Server 2008 R2 SQLEXPRESS MSSQL10_50.SQLEXPRESS Database Engine Services 1033 Express Edition 10.50.1600.1 No
    Microsoft SQL Server 2008 R2 SQLEXPRESS MSSQL10_50.SQLEXPRESS SQL Server Replication 1033 Express Edition 10.50.1600.1 No

    Paul T.

  • Tuesday, December 27, 2011 3:16 PM
     
     

    Here's the error returned by the installation of my program, which chains to the 2008 R2 SP1 installer:

    I've captured the error log indicated by the installation. It is copied below:

    -----

    The following properties have been set:
    Property: [AdminUser] = true {boolean}
    Property: [InstallMode] = SameSite {string}
    Property: [ProcessorArchitecture] = Intel {string}
    Property: [VersionNT] = 6.1.1 {version}
    Running checks for package 'Windows Installer 4.5', phase BuildList
    Looking up path for special folder 'WindowsFolder'
    Running check with folder 'C:\Windows\System32' and file 'msi.dll'
    Attempting to find file 'C:\Windows\System32\msi.dll'
    File version is '5.0.7601.17514'
    Setting value '5.0.7601.17514 {version}' for property 'VersionMsiDll'
    The following properties have been set for package 'Windows Installer 4.5':
    Property: [VersionMsiDll] = 5.0.7601.17514 {version}
    Running checks for command 'WindowsInstaller4_5\WindowsXP-KB942288-v3-x86.exe'
    Result of running operator 'VersionGreaterThanOrEqualTo' on property 'VersionMsi' and value '4.5': true
    Result of checks for command 'WindowsInstaller4_5\WindowsXP-KB942288-v3-x86.exe' is 'Bypass'
    Running checks for command 'WindowsInstaller4_5\WindowsXP-KB958655-v2-x86-ENU.exe'
    Result of running operator 'VersionGreaterThanOrEqualTo' on property 'VersionMsiDll' and value '4.5.6001.22299': true
    Result of checks for command 'WindowsInstaller4_5\WindowsXP-KB958655-v2-x86-ENU.exe' is 'Bypass'
    Running checks for command 'WindowsInstaller4_5\WindowsServer2003-KB942288-v4-x86.exe'
    Result of running operator 'VersionGreaterThanOrEqualTo' on property 'VersionMsi' and value '4.5': true
    Result of checks for command 'WindowsInstaller4_5\WindowsServer2003-KB942288-v4-x86.exe' is 'Bypass'
    Running checks for command 'WindowsInstaller4_5\WindowsServer2003-KB958655-v2-x86-ENU.exe'
    Result of running operator 'VersionGreaterThanOrEqualTo' on property 'VersionMsiDll' and value '4.5.6001.22299': true
    Result of checks for command 'WindowsInstaller4_5\WindowsServer2003-KB958655-v2-x86-ENU.exe' is 'Bypass'
    Running checks for command 'WindowsInstaller4_5\WindowsServer2003-KB942288-v4-x64.exe'
    Result of running operator 'VersionGreaterThanOrEqualTo' on property 'VersionMsi' and value '4.5': true
    Result of checks for command 'WindowsInstaller4_5\WindowsServer2003-KB942288-v4-x64.exe' is 'Bypass'
    Running checks for command 'WindowsInstaller4_5\WindowsServer2003.WindowsXP-KB958655-v2-x64-ENU.exe'
    Result of running operator 'VersionGreaterThanOrEqualTo' on property 'VersionMsiDll' and value '4.5.6001.22299': true
    Result of checks for command 'WindowsInstaller4_5\WindowsServer2003.WindowsXP-KB958655-v2-x64-ENU.exe' is 'Bypass'
    Running checks for command 'WindowsInstaller4_5\Windows6.0-KB958655-v2-x86.MSU'
    Result of running operator 'VersionGreaterThanOrEqualTo' on property 'VersionMsiDll' and value '4.5.6001.22308': true
    Result of checks for command 'WindowsInstaller4_5\Windows6.0-KB958655-v2-x86.MSU' is 'Bypass'
    Running checks for command 'WindowsInstaller4_5\Windows6.0-KB958655-v2-x64.MSU'
    Result of running operator 'VersionGreaterThanOrEqualTo' on property 'VersionMsiDll' and value '4.5.6001.22308': true
    Result of checks for command 'WindowsInstaller4_5\Windows6.0-KB958655-v2-x64.MSU' is 'Bypass'
    'Windows Installer 4.5' RunCheck result: No Install Needed
    Running checks for package 'Microsoft .NET Framework 4 (x86 and x64)', phase BuildList
    Reading value 'Version' of registry key 'HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full'
    Read string value '4.0.30319'
    Setting value '4.0.30319 {string}' for property 'DotNet40Full_TargetVersion'
    The following properties have been set for package 'Microsoft .NET Framework 4 (x86 and x64)':
    Property: [DotNet40Full_TargetVersion] = 4.0.30319 {string}
    Running checks for command 'DotNetFX40\dotNetFx40_Full_x86_x64.exe'
    Result of running operator 'ValueEqualTo' on property 'InstallMode' and value 'HomeSite': false
    Result of running operator 'VersionGreaterThanOrEqualTo' on property 'DotNet40Full_TargetVersion' and value '4.0.30129': true
    Result of checks for command 'DotNetFX40\dotNetFx40_Full_x86_x64.exe' is 'Bypass'
    Running checks for command 'DotNetFX40\dotNetFx40_Full_setup.exe'
    Result of running operator 'ValueNotEqualTo' on property 'InstallMode' and value 'HomeSite': true
    Result of checks for command 'DotNetFX40\dotNetFx40_Full_setup.exe' is 'Bypass'
    'Microsoft .NET Framework 4 (x86 and x64)' RunCheck result: No Install Needed
    Running checks for package 'SQL Server 2008 R2 Express SP1', phase BuildList
    Running external check with command 'C:\Users\ptobey\AppData\Local\Temp\VSD451B.tmp\SqlExpress2008R2SP1\SqlExpressChk.exe' and parameters '10.51.2500 1033'
    Process exited with code 2
    Setting value '2 {int}' for property 'SQLExpressChk'
    The following properties have been set for package 'SQL Server 2008 R2 Express SP1':
    Property: [SQLExpressChk] = 2 {int}
    Running checks for command 'SqlExpress2008R2SP1\SQLEXPR32_x86_ENU.EXE'
    Result of running operator 'ValueNotExists' on property 'VersionNT': false
    Result of running operator 'VersionLessThan' on property 'VersionNT' and value '5.1.2': false
    Result of running operator 'VersionEqualTo' on property 'VersionNT' and value '5.2.0': false
    Result of running operator 'VersionEqualTo' on property 'VersionNT' and value '5.2.1': false
    Result of running operator 'ValueEqualTo' on property 'AdminUser' and value 'false': false
    Result of running operator 'ValueEqualTo' on property 'SQLExpressChk' and value '-1': false
    Result of running operator 'ValueEqualTo' on property 'SQLExpressChk' and value '-2': false
    Result of running operator 'ValueEqualTo' on property 'SQLExpressChk' and value '-3': false
    Result of running operator 'ValueEqualTo' on property 'SQLExpressChk' and value '-4': false
    Result of running operator 'ValueLessThan' on property 'SQLExpressChk' and value '-4': false
    Result of running operator 'ValueNotEqualTo' on property 'ProcessorArchitecture' and value 'Intel': false
    Result of running operator 'ValueNotEqualTo' on property 'SQLExpressChk' and value '1': true
    Result of checks for command 'SqlExpress2008R2SP1\SQLEXPR32_x86_ENU.EXE' is 'Bypass'
    Running checks for command 'SqlExpress2008R2SP1\SQLEXPR32_x86_ENU.EXE'
    Result of running operator 'ValueNotEqualTo' on property 'ProcessorArchitecture' and value 'Intel': false
    Result of running operator 'ValueNotEqualTo' on property 'SQLExpressChk' and value '2': false
    Result of checks for command 'SqlExpress2008R2SP1\SQLEXPR32_x86_ENU.EXE' is 'Install'
    Running checks for command 'SqlExpress2008R2SP1\SQLEXPR_x64_ENU.EXE'
    Result of running operator 'ValueNotEqualTo' on property 'ProcessorArchitecture' and value 'amd64': true
    Result of checks for command 'SqlExpress2008R2SP1\SQLEXPR_x64_ENU.EXE' is 'Bypass'
    Running checks for command 'SqlExpress2008R2SP1\SQLEXPR_x64_ENU.EXE'
    Result of running operator 'ValueNotEqualTo' on property 'ProcessorArchitecture' and value 'amd64': true
    Result of checks for command 'SqlExpress2008R2SP1\SQLEXPR_x64_ENU.EXE' is 'Bypass'
    'SQL Server 2008 R2 Express SP1' RunCheck result: Install Needed
    EULA for components 'SQL Server 2008 R2 Express SP1' was accepted.
    Copying files to temporary directory "C:\Users\ptobey\AppData\Local\Temp\VSD451B.tmp\"
    Copying from 'E:\PM2_Installer\SqlExpress2008R2SP1\SQLEXPR32_x86_ENU.EXE' to 'C:\Users\ptobey\AppData\Local\Temp\VSD451B.tmp\SqlExpress2008R2SP1\SQLEXPR32_x86_ENU.EXE'
    Verifying file integrity of C:\Users\ptobey\AppData\Local\Temp\VSD451B.tmp\SqlExpress2008R2SP1\SQLEXPR32_x86_ENU.EXE
    WinVerifyTrust returned 0
    File trusted
    Running checks for package 'SQL Server 2008 R2 Express SP1', phase BeforePackage
    Running external check with command 'C:\Users\ptobey\AppData\Local\Temp\VSD451B.tmp\SqlExpress2008R2SP1\SqlExpressChk.exe' and parameters '10.51.2500 1033'
    Process exited with code 2
    Setting value '2 {int}' for property 'SQLExpressChk'
    The following properties have been set for package 'SQL Server 2008 R2 Express SP1':
    Property: [SQLExpressChk] = 2 {int}
    Running checks for command 'SqlExpress2008R2SP1\SQLEXPR32_x86_ENU.EXE'
    Result of running operator 'ValueNotEqualTo' on property 'ProcessorArchitecture' and value 'Intel': false
    Result of running operator 'ValueNotEqualTo' on property 'SQLExpressChk' and value '2': false
    Result of checks for command 'SqlExpress2008R2SP1\SQLEXPR32_x86_ENU.EXE' is 'Install'
    'SQL Server 2008 R2 Express SP1' RunCheck result: Install Needed
    Verifying file integrity of C:\Users\ptobey\AppData\Local\Temp\VSD451B.tmp\SqlExpress2008R2SP1\SQLEXPR32_x86_ENU.EXE
    WinVerifyTrust returned 0
    File trusted
    Installing using command 'C:\Users\ptobey\AppData\Local\Temp\VSD451B.tmp\SqlExpress2008R2SP1\SQLEXPR32_x86_ENU.EXE' and parameters '/q /hideconsole /action=Upgrade /instancename=SQLEXPRESS /skiprules=RebootRequiredCheck /IAcceptSQLServerLicenseTerms'
    Process exited with code -2061893602
    Status of package 'SQL Server 2008 R2 Express SP1' after install is 'InstallFailed'

    -----

    Everything appears to be set correctly and based on the variables set the correct parameters should be passed to the SQL Server installation file. The exit code is the only indication of failure. Note that attempting to manually run the installation file results in a "nothing to install" message, also, so it appears that this installer WILL NOT work as an upgrade to R2. It's broken.

    Paul T.

     

  • Wednesday, December 28, 2011 2:48 AM
    Moderator
     
     

    Hi Paul,

    It is recommended to uninstall your previous 'SQL Server 2008 R2 Express' through 'Control Panel\All Control Panel Items\Programs and Features' ,reboot your machine and then reinstall 'SQL Server 2008 R2 Express SP1'.Please remember to backup your database before uninstallation and select the right version (64 bit or 32 bit)of SQL Server 2008 R2 Express SP1 based on your Windows OS.


    Best Regards,
    Peja

    Please remember to click "Mark as Answer" on the post that helps you, and to click "Unmark as Answer" if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.
  • Wednesday, December 28, 2011 1:16 PM
     
     

    HI Paul,

    It seems that you are installing a lower version(9.0) SP1 and right now you have higher version(10.0) R2.

    For this matter you have to uninstall R2 and then install a new install of SP1.

    Cheers,


    - Sekilha
  • Wednesday, December 28, 2011 2:40 PM
     
     

    Sorry, not acceptable. This has to be an automated install of my application which is dependent on SQL Server Express. It needs to be an integrated process.

    Paul T.

  • Wednesday, December 28, 2011 2:45 PM
     
     

    No, it doesn't seem that way. I'm installing 2008 R2 SP1 over the top of 2008 R2. If I go through the process described by Peja above, uninstalling the current version and installing my desired package, I get this version:

    Microsoft SQL Server 2008 R2 SP1 Setup Discovery Report

    Product Instance Instance ID Feature Language Edition Version Clustered
    Sql Server 2005     Tools 1033 Express Edition 9.4.5000 No
    Sql Server 2005     ToolsClient 1033 Express Edition 9.4.5000 No
    Sql Server 2005     ToolsClient\Connectivity 1033 Express Edition 9.4.5000 No
    Sql Server 2008 SQLEXPRESS MSSQL10_50.SQLEXPRESS Database Engine Services 1033 Express Edition 10.51.2500.0 No
    Sql Server 2008 SQLEXPRESS MSSQL10_50.SQLEXPRESS SQL Server Replication 1033 Express Edition 10.51.2500.0 No

    Clearly a later version, 10.51.2500.0 compared to 10.50.1600.1.

    Paul T.

  • Thursday, December 29, 2011 2:03 AM
    Moderator
     
     

    Hi Paul,

    SQL Server  2008 R2 Express SP1 is the whole installation containing SQL Server 2008 R2 Express and Service Pack 1. If you install SQL Server 2008 R2 Express SP1 over SQL Server 2008 R2 Express, you need to select action as Upgrade. If you install SQL Server 2008 R2 Express SP1 after uninstall SQL Server 2008 R2 Express,you need to select action as Install. If you have some previous installed SQL Server 2005 compenents,please uninstall them firstly.

    You could upload the installation log file to a network shared folder like 'Skydriver'.Below is the way to get the three log files which I have posted in the thread before:
    1)  You could find the summary.txt at your folder C:\ProgramFiles\Microsoft SQL Server\100\Setup Bootstrap\Log\  . And you need to open summary.txt, and then you can generally search for “error” or “failed” keywords.
    2)  For more information about details of the failure, open the file that is listed in the line starting with “Log with failure” in summary.txt. You could see file named like Summary_<%ComputerName%_YYYYMMDD_HHMMSS>.txt which could be found in C:\ProgramFiles\Microsoft SQL Server\100\Setup Bootstrap\Log\<YYYYMMDD_HHMMSS>\Summary_<%ComputerName%_YYYYMMDD_HHMM>.txt
    3) To find errors in this file, you can generally search for “error” or “failed” keywords in Summary_<%ComputerName%_YYYYMMDD_HHMM>.txt. For more information about details of the failure, open the file that is listed in the line starting with “Log with failure”.  That file is named like Detail.txt which located in c:\ProgramFiles\Microsoft SQL Server\100\Setup Bootstrap\Log\<YYYYMMDD_HHMM>\Detail.txt

     


    Best Regards,
    Peja

    Please remember to click "Mark as Answer" on the post that helps you, and to click "Unmark as Answer" if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.
  • Thursday, December 29, 2011 3:50 PM
     
     

    Here's what happens when my installer detects that SQL Server already is installed:

        <!-- Defines an upgrade installation (x86) -->
        <Command PackageFile="SQLEXPR32_x86_ENU.EXE"
         Arguments="/q /hideconsole /action=Upgrade /instancename=SQLEXPRESS /skiprules=RebootRequiredCheck /IAcceptSQLServerLicenseTerms"
         EstimatedInstalledBytes="225000000"
         EstimatedInstallSeconds="420">
          <InstallConditions>
            <BypassIf Property="ProcessorArchitecture" Compare="ValueNotEqualTo" Value="Intel"/>
            <BypassIf Property="SQLExpressChk" Compare="ValueNotEqualTo" Value="2"/>
          </InstallConditions>
          <ExitCodes>
            <ExitCode Value="0" Result="Success"/>
            <ExitCode Value="1641" Result="SuccessReboot"/>
            <ExitCode Value="3010" Result="SuccessReboot"/>
            <!-- 0x84BE0BC2 (1214,3010) -->
            <ExitCode Value="-2067919934" Result="FailReboot"/>
            <!-- 0x84C10BC2 (1217,3010) -->
            <ExitCode Value="-2067723326" Result="FailReboot"/>
            <!-- 0x84BE0007 (1214,7) -->
            <ExitCode Value="-2067922937" Result="Fail" String="AdminRequired"/>
            <!-- 0x84C4001F (1220,31) -->
            <ExitCode Value="-2067529697" Result="Fail" String="AdminRequired"/>
            <!-- 0x84BE0001 (1214,1)-->
            <ExitCode Value="-2067922943" Result="Fail" String="InvalidPlatformOSServicePacks"/>
            <!-- 0x84C4000B (1220,11) -->
            <ExitCode Value="-2067529717" Result="Fail" String="AnotherInstanceRunning"/>
            <!-- 0x84BE01F8 (1214,504) -->
            <ExitCode Value="-2067922440" Result="Fail" String="BetaComponentsFailure"/>
            <!-- 0x84BE01FA (1214,506) -->
            <ExitCode Value="-2067922438" Result="Fail" String="BetaComponentsFailure"/>
            <!-- 0x84BE0202 (1214,514) -->
            <ExitCode Value="-2067922430" Result="Fail" String="InvalidPlatformArchitecture"/>
            <!-- 0x84BE0203 (1214,515) -->
            <ExitCode Value="-2067922429" Result="Fail" String="InvalidPlatformArchitecture"/>
            <ExitCode Value="216" Result="Fail" String="InvalidPlatformArchitecture"/>
            <DefaultExitCode Result="Fail" FormatMessageFromSystem="true" String="GeneralFailure" />
          </ExitCodes>
        </Command>

    That sure looks like it's trying to cause SQL Server 2008 R2 SP1 installer to do an "Upgrade", but the SQL Server 2008 R2 SP1 (full) installer does not seem to agree that there is anything to upgrade. I believe that it's broken, as this worked fine when I went from 2008 to 2008 R2 in the same way. Can you connect me with someone to whom I can complain about the installer in hopes of getting it fixed? In the meantime, I will try to find the error in the setup log files.

    Paul T.

     

  • Thursday, December 29, 2011 6:44 PM
     
     

    Paul,

    Here is the Service Pack download you need.

    http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=26727

    The version should be 10.50.2500.0

    The version that you reported as upgrading to (10.51.2500.0) is (I am almost certain) an Evaluation version.

  • Thursday, December 29, 2011 7:49 PM
     
     

    No. What I'm including in my application install is SQL Server Express 2008 R2 SP1. Since I don't know that the end-user of this application has SQL Server, I have to ship the whole thing not just the service pack. Remember, I'm not trying to upgrade *a* machine that I'm managing; I'm installing/upgrading potentially many machines that I know nothing about. The users of these machines are not database guys.

    Paul T.

  • Thursday, December 29, 2011 9:18 PM
     
     

    Paul,

    It looks like you grabbed SQLEXPR32_x86_ENU.exe when you may need SQLEXPRADV_x86_ENU.exe

    I was trying to confirm that Advanced Services is required for Replication in SQL Express, but was unable to locate a definitive statement on it.

  • Thursday, December 29, 2011 9:28 PM
     
     

    I don't need replication or advanced services. SQLEXPR32_x86_ENU when installed alone on a new system is the correct version. I need for that installer to upgrade R2, if present, to R2 SP1 (which is what I think almost anyone would expect when /action=Upgrade is set). However, if you set that parameter, the installation fails with a "nothing to upgrade" error. This indicates that the installer is distinguishing between "upgrade" and "apply service pack".

    Paul T.

  • Thursday, December 29, 2011 9:46 PM
     
     Answered

    Here's the answer for those eagerly following along:

    If you wish to install SQL Server Express 2008 R2 Service Pack 1 as a pre-requisite for your own application using SQLEXPR32_x866_ENU.exe, there is a special case when the target machine has R2 installed. You need to launch SQLEXPR32_x86_ENU.exe or SQLEXPR_x64_ENU.exe with the following option:

    /action=EditionUpgrade

    This is *different* from the parameter you would use if the customer has plain 2008 (no R2), installed:

    /action=Upgrade

    If you are building your own bootstrapping installer packages for Visual Studio-built programs, you can use the SQL Server 2005 package as a base and make suitable changes to install 2008 R2 SP1. The one non-obvious change is the addition of this third COMMAND block for EditionUpgrade:

    1. Install on a system without SQL Server

    2. Upgrade for an earlier version

    3. EditionUpgrade to apply SP1 to 2008 R2

    All of this is contrary to common sense I think, but perhaps this will help one or two SQL Server Express users out there in the application development community.

    Paul T.

     

  • Wednesday, May 30, 2012 10:14 PM
     
     

    Here's the answer for those eagerly following along:

    If you wish to install SQL Server Express 2008 R2 Service Pack 1 as a pre-requisite for your own application using SQLEXPR32_x866_ENU.exe, there is a special case when the target machine has R2 installed. You need to launch SQLEXPR32_x86_ENU.exe or SQLEXPR_x64_ENU.exe with the following option:

    /action=EditionUpgrade

    This is *different* from the parameter you would use if the customer has plain 2008 (no R2), installed:

    /action=Upgrade

    If you are building your own bootstrapping installer packages for Visual Studio-built programs, you can use the SQL Server 2005 package as a base and make suitable changes to install 2008 R2 SP1. The one non-obvious change is the addition of this third COMMAND block for EditionUpgrade:

    1. Install on a system without SQL Server

    2. Upgrade for an earlier version

    3. EditionUpgrade to apply SP1 to 2008 R2

    All of this is contrary to common sense I think, but perhaps this will help one or two SQL Server Express users out there in the application development community.

    Paul T.

     

    Paul,

    I know this is several months old and what you're suggesting makes sense.  I'm running into the exact same issue that you did originally and after reading your exhaustive thread, I was pleased to see you discovered a solution.

    My question is, what were the InstallConditions that you had to check for for the "Third" COMMAND block?

    It seems like the SqlExpressChk would have to return 3 potential return values, 1 = New Install, 2 = Upgrade (but I think in this case, it would really mean EditionUpgrade and then another one to indicate that it was "older" than the specified "Arguments" version provided to SqlExpressChk.

    Any guidance would be greatly appreciated.

    Thanks,

    George P.

  • Thursday, May 31, 2012 12:04 AM
     
     

    So I had to write my own registry checker to identify the third case. I run two checks:

    A. SqlExpressChk.exe 10.51.2500 1033

    B. SQLServer2008R2MinorVersion = HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\Setup\Version

    Here are the cases and my qualifications to run the various types of SQL Server Express installs on x86 operating systems:

    1. SQLEXPR32_x86_ENU.EXE /action=Install

    iff A = 1

    2. SQLEXPR32_x86_ENU.EXE /action=Patch

    iff A = 2 and B exists and B = 10.50.1600.1

    3. SQLEXPR32_x86_ENU.EXE /action=Upgrade

    iff A = 2 and B exists and B != 10.50.1600.1

    Similar tests will have to be made for 64-bit installs using SQLEXPR_x64_ENU.EXE and the same test conditions.

    Paul T.

  • Thursday, May 31, 2012 2:23 PM
     
     

    Paul, thanks for taking the time to provide me the additional details.  I was hoping there was a magical "3" response that came back from the existing SQLExpressChk.exe.  :)

    No worries, it's a fairly easy set of checks to make so I appreciate your time and the efforts you went through to find a solution.

    George P.