Falha na instalação do SQL Server 2014 SP1 - bug no SSIS_hotfix_install.sql

5

A instalação do SQL Server 2014 SP1 falhará se você tiver um catálogo SSIS no seu servidor. Depois disso, o servidor não inicia. Reconstruir os bancos de dados do sistema não ajudou (não tenho certeza, talvez porque os bancos de dados do sistema não foram realmente corrompidos, portanto, eles não foram realmente reconstruídos, talvez).

Existe um erro no script SSIS_hotfix_install.sql que vem com o SP1 na linha 3188:

CREATE NONCLUSTERED INDEX [IX_internal_object_parameters_inc] ON [internal].[object_parameters]

Eles usaram um nome de 2 partes para a tabela, enquanto o script que deve atualizar o SSISDB é executado no banco de dados mestre.

O script pode, por padrão, ser encontrado em C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Install , mas aparentemente eles não o levam para execução na inicialização do servidor.
Eles provavelmente pegam de sqlscriptupgrade.dll encontrado em C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Binn . Alguém sabe como ignorar a execução desse script e obter o início do servidor?

    
por vaso 16.04.2015 / 13:11

2 respostas

10

Inicie o SQL Server com sinalizador de rastreamento 902 . Isso irá ignorar a execução do script de atualização.

  1. Start -> All Programs -> Microsoft SQL Server 2008 R2 or the highest version installed -> Configuration Tools -> SQL Server Configuration Manager

  2. In SQL Server Configuration Manager, click SQL Server Services.

  3. In the right pane, right-click SQL Server (), and then click Properties.

  4. On the Startup Parameters tab, in the Specify a startup parameter box, type the parameter (in this case the trace flag -T902), and then click Add. You will now see the parameters similar to below SQL Server Istance Startup Parameters SQL Server Istance Startup Parameters

  5. Click OK.

  6. Restart the Database Engine.
  7. Connect to SQL Server instance from SQL Server Management Studio and take corrective actions to resolve the errors causing script upgrade to fail.
  8. Now finally remove the -T902 trace flag from SQL Server Configuration manager
  9. Restart SQL Server Instance
  10. Verify Errorlog to make sure script upgrade finished successfully

Em seguida, execute manualmente o script SSIS_hotfix_install.sql (depois de ter adicionado SSISDB. na linha 3188).

    
por 16.04.2015 / 14:56
4

Eu tentei o procedimento sugerido - ele não funcionou o que era um pouco previsível. Na inicialização subseqüente, após a remoção do sinalizador de rastreio -T902, o servidor tenta executar o mesmo script compilado em dll (veja acima), que não posso modificar. O script é burro em não detectar que as mudanças contidas nele já estão aplicadas. Uma solução suja que eu poderia pensar é criar essa tabela no banco de dados mestre para permitir script para construir o índice sobre ele e ter sucesso. Eu testei isso e funcionou. Todo o procedimento:

  1. Após a instalação com falha, defina o parâmetro de inicialização -T902.
  2. Execute o seguinte código no seu servidor:

USE master; GO create schema internal; go CREATE TABLE [internal].[object_parameters]( [parameter_id] [bigint] IDENTITY(1,1) NOT NULL, [project_id] [bigint] NOT NULL, [project_version_lsn] [bigint] NOT NULL, [object_type] [smallint] NOT NULL, [object_name] nvarchar NOT NULL, [parameter_name] [sysname] NOT NULL, [parameter_data_type] nvarchar NOT NULL, [required] [bit] NOT NULL, [sensitive] [bit] NOT NULL, [description] nvarchar NULL, [design_default_value] [sql_variant] NULL, [default_value] [sql_variant] NULL, [sensitive_default_value] varbinary NULL, [base_data_type] nvarchar NULL, [value_type] char NOT NULL, [value_set] [bit] NOT NULL, [referenced_variable_name] nvarchar NULL, [validation_status] char NOT NULL, [last_validation_time] datetimeoffset NULL, CONSTRAINT [PK_Object_Parameters] PRIMARY KEY CLUSTERED ( [parameter_id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

  1. Remova o parâmetro de inicialização -T902 e reinicie o servidor

  2. Limpe o banco de dados mestre executando

use master; drop table [internal].[object_parameters]; drop schema internal;

  1. Execute o SSIS_hotfix_install.sql manualmente após corrigir a linha 3188 como detalhado acima.

  2. Reinicie o servidor.

O motivo da execução do SSIS_hotfix_install.sql corrigido no final do procedimento é impedir que o script com bugs incorporado na dll elimine o índice na inicialização subsequente, antes que o SQL Server considere a atualização concluída com êxito.

    
por 17.04.2015 / 04:56