locked
Cannot install SQL2008 with existing SQL2005 RRS feed

  • Question

  • I have a computer running Windows Server 2003 SP2.

    SQL2005 was installed some time ago. See http://marcie.ucollege.edu/rihenriq/sql2005.bmp for stats. It was installed as a named instance and is the only instance.

    About a year ago, Reporting Services was added. It appears that in doing so, Reporting Services created two more instances for itself, MSSQL.2 and MSSQL.3.

    The software that uses this server needs to have SQL2008. The software is also having problems with the named instance, so I want SQL2008 to use the default instance.

    I setup a test box, installed SQL2005 as a named instance and then installed SQL2008 as the default instance. My plan was to bring up SQL2008, move the databases, users, and jobs as needed. When everything was working fine, I would uninstall SQL2005 and IIS. Everything seemed to work fine including Reporting Services on the test box.

    However, when I went to install SQL2008 on the production box I get this error:

    ===
    [Error Message]
    The SQL Server instance 'MSSQLSERVER' already has an Instance ID '2' that is different than the specified Instance ID 'MSSQLSERVER'. Specifying more than one instance ID for the same SQL Server instance is not supported.

    [Details]
    Microsoft.SqlServer.Chainer.Infrastructure.InputSettingValidationException: The SQL Server instance 'MSSQLSERVER' already has an Instance ID '2' that is different than the specified Instance ID 'MSSQLSERVER'. Specifying more than one instance ID for the same SQL Server instance is not supported.
    ===

    For a screenshot,  see http://marcie.ucollege.edu/rihenriq/sql2008setup.bmp

    I am wondering if this is because Reporting Services was added later -- in my test I installed it at the same time I installed SQL2005.

    It does not matter whether I choose the default instance or a named instance during the SQL2008 install, the error message is the same. I saw other forum threads that had problems, but they do not seem to match my particular circumstances.

    Does anyone know how to convince SQL2008 setup to install?
    Tuesday, May 18, 2010 8:51 PM

Answers

  • Hi,

     

    From your description and the screenshot you gave, the possible reason of this issue might be:

    You had added a named instance of SQL Server Engine 2005 to the machine. While you added SQL Server Reporting Service(SSRS) 2005 to this instance, you did not choose any  existing instance of SQL Server and click “Next” in the “Instance Name” page. As a result of this operation, instance of SSRS 2005 is default instance. Instance name of SQL Server Engine 2005 and SSRS 2005 became different. When you want to install SQL Server 2008 by using the default instance, it will fail.

     

    In this situation, we recommend that you upgrade the SSRS 2005 to SSRS 2008 and add feature of SQL Server Engine 2008 to the default instance then.

     

    Please follow the steps:

    1.       Backup information related to SSRS 2005
    Since I am not familiar with SSRS, I recommend that you ask this question in SSRS’s forum

    2.       Upgrade SSRS 2005 to SSRS 2008
    a) Run “setup.exe”
    b) In the “SQL Server Installation Center” window, click “Installation” in the left and then click “Upgrade from SQL Server 2000 or SQL Server 2005” in the right
    c) In the “Select Instance” page, please select “MSSQLSERVER” from the dropdown list to the right of “Instance to upgrade:”
    d) Complete the upgrade

    3.       Add feature of SQL Server Engine 2008 to default instance
    a) Run “setup.exe”
    b) In the “SQL Server Installation Center” window, click “Installation” in the left and then click “New SQL Server stand-alone installation or add features to an existing installation” in the right
    c) In the “Installation Type” page, please click “Add features to an existing instance of SQL Server 2008 and select “MSSQLSERVER” from the dropdown list below and click “Next”
    d) In the “Feature Selection” page, please select the features you need and then click “Next”
    e) Complete the upgrade

     

    If anything is unclear, please let me know.

    • Marked as answer by Tom Li - MSFT Wednesday, May 26, 2010 11:12 AM
    Friday, May 21, 2010 7:06 AM

All replies

  • Hello,

    If there is a default instance already installed, then SQL Server 2008 cannot be installed as default instance.

    Please verify how many instances you have running on that server with the following T-SQL code:

     

     

    Set NoCount On

     

    Declare @CurrID int,@ExistValue int, @MaxID int, @SQL nvarchar(1000)

     

    Declare @TCPPorts Table (PortType nvarchar(180), Port int)

     

    Declare @SQLInstances Table (InstanceID int identity(1, 1) not null primary key,

     

                                              InstName nvarchar(180),

     

                                              Folder nvarchar(50),

     

                                              StaticPort int null,

     

                                              DynamicPort int null,

     

                                              Platform int null);

     

    Declare @Plat Table (Id int,Name varchar(180),InternalValue varchar(50), Charactervalue varchar (50))

     

    Declare @Platform varchar(100)

     

    Insert into @Plat exec xp_msver platform

     

    select @Platform = (select 1 from @plat where charactervalue like '%86%')

     

    If @Platform is NULL

     

    Begin

     

    Insert Into @SQLInstances (InstName, Folder)

     

    Exec xp_regenumvalues N'HKEY_LOCAL_MACHINE',

     

                                 N'SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL';

     

    Update @SQLInstances set Platform=64

     

    End

     

    else

     

    Begin

     

    Insert Into @SQLInstances (InstName, Folder)

     

    Exec xp_regenumvalues N'HKEY_LOCAL_MACHINE',

     

                                 N'SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL';

     

    Update @SQLInstances Set Platform=32

     

    End  

     

     

     

    Declare @Keyexist Table (Keyexist int)

     

    Insert into @Keyexist

     

    Exec xp_regread'HKEY_LOCAL_MACHINE',

     

                                  N'SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server\Instance Names\SQL';

     

    select @ExistValue= Keyexist from @Keyexist

     

    If @ExistValue=1

     

    Insert Into @SQLInstances (InstName, Folder)

     

    Exec xp_regenumvalues N'HKEY_LOCAL_MACHINE',

     

                                  N'SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server\Instance Names\SQL';

     

    Update @SQLInstances Set Platform =32 where Platform is NULL

     

     

     

    Select @MaxID = MAX(InstanceID), @CurrID = 1

     

    From @SQLInstances

     

    While @CurrID <= @MaxID

     

      Begin

     

          Delete From @TCPPorts

     

         

     

          Select @SQL = 'Exec xp_instance_regread N''HKEY_LOCAL_MACHINE'',

     

                                  N''SOFTWARE\Microsoft\\Microsoft SQL Server\' + Folder + '\MSSQLServer\SuperSocketNetLib\Tcp\IPAll'',

     

                                  N''TCPDynamicPorts'''

     

          From @SQLInstances

     

          Where InstanceID = @CurrID

     

         

     

          Insert Into @TCPPorts

     

          Exec sp_executesql @SQL

     

         

     

          Select @SQL = 'Exec xp_instance_regread N''HKEY_LOCAL_MACHINE'',

     

                                  N''SOFTWARE\Microsoft\\Microsoft SQL Server\' + Folder + '\MSSQLServer\SuperSocketNetLib\Tcp\IPAll'',

     

                                  N''TCPPort'''

     

          From @SQLInstances

     

          Where InstanceID = @CurrID

     

         

     

     

     

          Insert Into @TCPPorts

     

          Exec sp_executesql @SQL

     

     

     

          Select @SQL = 'Exec xp_instance_regread N''HKEY_LOCAL_MACHINE'',

     

                                  N''SOFTWARE\Wow6432Node\Microsoft\\Microsoft SQL Server\' + Folder + '\MSSQLServer\SuperSocketNetLib\Tcp\IPAll'',

     

                                  N''TCPDynamicPorts'''

     

          From @SQLInstances

     

          Where InstanceID = @CurrID

     

         

     

          Insert Into @TCPPorts

     

          Exec sp_executesql @SQL

     

         

     

          Select @SQL = 'Exec xp_instance_regread N''HKEY_LOCAL_MACHINE'',

     

                                  N''SOFTWARE\Wow6432Node\Microsoft\\Microsoft SQL Server\' + Folder + '\MSSQLServer\SuperSocketNetLib\Tcp\IPAll'',

     

                                  N''TCPPort'''

     

          From @SQLInstances

     

          Where InstanceID = @CurrID

     

         

     

     

     

          Insert Into @TCPPorts

     

          Exec sp_executesql @SQL

     

     

     

         

     

          Update SI

     

          Set StaticPort = P.Port,

     

                DynamicPort = DP.Port

     

          From @SQLInstances SI

     

          Inner Join @TCPPorts DP On DP.PortType = 'TCPDynamicPorts'

     

          Inner Join @TCPPorts P On P.PortType = 'TCPPort'

     

          Where InstanceID = @CurrID;

     

         

     

          Set @CurrID = @CurrID + 1

     

      End

     

     

     

    Select serverproperty('ComputerNamePhysicalNetBIOS') as ServerName, InstName, StaticPort, DynamicPort,Platform

     

    From @SQLInstances

     

    Set NoCount Off



    Hope this helps.

    Regards,

    Alberto Morillo
    SQLCoffee.com

    Tuesday, May 18, 2010 9:01 PM
  • I ran your script and it shows only one instance.  Here is the output:  CHARLIE ADMIN 1433 1050 32

     

    While I can understand that you cannot have two default instances, I should be able to install 2008 as another instance, but am unable to do that.  I am stuck on the screen "Instance Confiuration" screen.  No matter what I choose I cannot get past it.

     

    Wednesday, May 19, 2010 2:14 PM
  • Hi,

     

    From your description and the screenshot you gave, the possible reason of this issue might be:

    You had added a named instance of SQL Server Engine 2005 to the machine. While you added SQL Server Reporting Service(SSRS) 2005 to this instance, you did not choose any  existing instance of SQL Server and click “Next” in the “Instance Name” page. As a result of this operation, instance of SSRS 2005 is default instance. Instance name of SQL Server Engine 2005 and SSRS 2005 became different. When you want to install SQL Server 2008 by using the default instance, it will fail.

     

    In this situation, we recommend that you upgrade the SSRS 2005 to SSRS 2008 and add feature of SQL Server Engine 2008 to the default instance then.

     

    Please follow the steps:

    1.       Backup information related to SSRS 2005
    Since I am not familiar with SSRS, I recommend that you ask this question in SSRS’s forum

    2.       Upgrade SSRS 2005 to SSRS 2008
    a) Run “setup.exe”
    b) In the “SQL Server Installation Center” window, click “Installation” in the left and then click “Upgrade from SQL Server 2000 or SQL Server 2005” in the right
    c) In the “Select Instance” page, please select “MSSQLSERVER” from the dropdown list to the right of “Instance to upgrade:”
    d) Complete the upgrade

    3.       Add feature of SQL Server Engine 2008 to default instance
    a) Run “setup.exe”
    b) In the “SQL Server Installation Center” window, click “Installation” in the left and then click “New SQL Server stand-alone installation or add features to an existing installation” in the right
    c) In the “Installation Type” page, please click “Add features to an existing instance of SQL Server 2008 and select “MSSQLSERVER” from the dropdown list below and click “Next”
    d) In the “Feature Selection” page, please select the features you need and then click “Next”
    e) Complete the upgrade

     

    If anything is unclear, please let me know.

    • Marked as answer by Tom Li - MSFT Wednesday, May 26, 2010 11:12 AM
    Friday, May 21, 2010 7:06 AM