Назад | Перейти на главную страницу

Ошибка установки SQL Server 2014 SP1 - ошибка в SSIS_hotfix_install.sql

Установка SQL Server 2014 с пакетом обновления 1 (SP1) не работает, если на вашем сервере есть каталог SSIS. После этого сервер не запускается. Восстановление системных баз данных не помогло (не уверен, возможно, потому, что системные базы данных не были на самом деле повреждены, следовательно, они не были действительно восстановлены).

Ошибка в скрипте SSIS_hotfix_install.sql, который поставляется с SP1 в строке 3188:

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

Они использовали имя из двух частей для таблицы, в то время как сценарий, который должен обновлять SSISDB, выполняется в основной базе данных.

Скрипт по умолчанию можно найти в C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Install , но, видимо, они не берут его оттуда для выполнения при запуске сервера.
Вероятно, они взяли это из sqlscriptupgrade.dll нашел в C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Binn. Кто-нибудь знает, как обойти выполнение этого скрипта и запустить сервер?

Запустите SQL Server с флаг трассировки 902. Это позволит обойти выполнение сценария обновления.

  1. Пуск -> Все программы -> Microsoft SQL Server 2008 R2 или самая последняя установленная версия -> Инструменты настройки -> Диспетчер конфигурации SQL Server

  2. В диспетчере конфигурации SQL Server щелкните Службы SQL Server.

  3. На правой панели щелкните правой кнопкой мыши SQL Server () и выберите команду Свойства.

  4. На вкладке Параметры запуска в поле Укажите параметр запуска введите параметр (в данном случае флаг трассировки -T902), а затем нажмите Добавить. Теперь вы увидите параметры, аналогичные приведенным ниже Параметры запуска SQL Server Istance Параметры запуска SQL Server Istance

  5. Щелкните ОК.

  6. Перезапустите компонент Database Engine.
  7. Подключитесь к экземпляру SQL Server из SQL Server Management Studio и выполните корректирующие действия для устранения ошибок, приводящих к сбою обновления сценария.
  8. Теперь, наконец, удалите флаг трассировки -T902 из диспетчера конфигурации SQL Server.
  9. Перезапустить экземпляр SQL Server
  10. Проверьте журнал ошибок, чтобы убедиться, что обновление сценария завершено успешно

Затем, после этого, вручную выполните скрипт SSIS_hotfix_install.sql (после добавления SSISDB. в строке 3188).

Я попробовал предложенную процедуру - она ​​не сработала, что было несколько предсказуемо. При последующем запуске, после удаления флага трассировки -T902, сервер пытается выполнить тот же сценарий, скомпилированный в dll (см. Выше), который я не могу изменить. Сценарий тупой, не обнаруживая, что изменения, содержащиеся в нем, уже применены. Грязный обходной путь, о котором я мог подумать, - это создать эту таблицу в базе данных master, чтобы позволить сценарию построить индекс на ней и добиться успеха. Я протестировал это, и это сработало. Вся процедура:

  1. После неудачной установки установите параметр запуска -T902.
  2. Выполните на своем сервере следующий код:

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. Удалите параметр запуска -T902 и перезапустите сервер

  2. Очистите главную базу данных, выполнив

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

  1. Запустите SSIS_hotfix_install.sql вручную после исправления строки 3188, как описано выше.

  2. Перезагрузите сервер.

Причина выполнения исправленного файла SSIS_hotfix_install.sql в конце процедуры состоит в том, чтобы предотвратить сброс индекса встроенным в dll сценарием с ошибками при последующем запуске, прежде чем SQL Server сочтет обновление успешно завершенным.