SQL Server 2014 SP1安装失败 – SSIS_hotfix_install.sql中的错误

如果您的服务器上有SSIS目录,则安装SQL Server 2014 SP1将失败。 之后,服务器不启动。 重build系统数据库没有帮助(不确定,也许是因为系统数据库实际上并没有损坏,因此他们可能并没有真正重build)。

第3188行的SP1随附的脚本SSIS_hotfix_install.sql中存在一个错误:

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

他们使用一个2部分名称的表,而应该升级SSISDB的脚本在主数据库中执行。

该脚本可以默认在C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Install ,但显然他们不会从服务器启动时执行。
他们可能从C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Binn 。 有谁知道如何绕过该脚本的执行,并获得服务器启动?

用跟踪标志902启动SQL Server。 这将绕过升级脚本的执行。

  1. 开始 – >所有程序 – > Microsoft SQL Server 2008 R2或安装的最高版本 – >configuration工具 – > SQL Serverconfigurationpipe理器

  2. 在SQL Serverconfigurationpipe理器中,单击SQL Server服务。

  3. 在右窗格中,右键单击“SQL Server()”,然后单击“属性”。

  4. 在“启动参数”选项卡的“指定启动参数”框中,键入参数(本例中为跟踪标志-T902),然后单击“添加”。 您现在将看到类似于下面的SQL Server实例启动参数SQL Server实例启动参数的参数

  5. 点击OK。

  6. 重新启动数据库引擎。
  7. 从SQL Server Management Studio连接到SQL Server实例,并采取纠正措施来解决导致脚本升级失败的错误。
  8. 现在,最后从SQL Serverconfigurationpipe理器中删除-T902跟踪标志
  9. 重新启动SQL Server实例
  10. validation错误日志以确保脚本升级成功完成

然后,手动执行SSIS_hotfix_install.sql脚本(在第3188行添加了SSISDB.之后)。

我尝试了build议的程序 – 这是不可预见的工作。 在后续启动时,除去-T902跟踪标志后,服务器将尝试执行编译为dll的同一脚本(请参阅上文),这是我无法修改的。 该脚本愚蠢的是没有检测到其中包含的更改已经被应用。 我能想到的一个肮脏的解决方法是在master数据库中创build该表,以允许脚本在其上构build索引并成功。 我testing了这个,它工作。 整个程序:

  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. 如上所述,在纠正第3188行之后,手动执行SSIS_hotfix_install.sql。

  2. 重新启动服务器。

在过程结束时执行更正的SSIS_hotfix_install.sql的原因是,在SQL Server认为升级成功完成之前,防止在后续启动时embedded在dll中的错误脚本丢失索引。