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

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

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

随 SP1 附带的脚本 SSIS_hotfix_install.sql 第 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脚本。有人知道如何绕过该脚本的执行并让服务器启动吗?

答案1

使用以下命令启动 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. 重新启动数据库引擎。
  7. 从 SQL Server Management Studio 连接到 SQL Server 实例并采取纠正措施来解决导致脚本升级失败的错误。
  8. 现在最终从 SQL Server 配置管理器中删除 -T902 跟踪标志
  9. 重新启动 SQL Server 实例
  10. 验证错误日志以确保脚本升级成功完成

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

答案2

我尝试了建议的程序 - 它不起作用,这在某种程度上是可以预见的。在随后的启动中,在删除 -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. 按照上述说明更正第 3188 行后手动执行 SSIS_hotfix_install.sql。

  2. 重启服务器。

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

相关内容