如果您的服务器上有 SSIS 目录,则SQL Server 2014 SP1的安装将失败。之后,服务器不会启动。重建系统数据库没有帮助(不确定,可能是因为系统数据库实际上并没有损坏,因此它们可能没有真正重建)。
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
. 有谁知道如何绕过该脚本的执行并让服务器启动?
使用跟踪标志 902启动 SQL Server 。这将绕过升级脚本的执行。
然后,之后,手动执行 SSIS_hotfix_install.sql 脚本(
SSISDB.
在第 3188 行添加之后)。我尝试了建议的程序 - 它不起作用,这是可以预见的。在随后启动时,在删除 -T902 跟踪标志后,服务器尝试执行编译成 dll 的相同脚本(见上文),我无法修改。该脚本很愚蠢,没有检测到其中包含的更改已被应用。我能想到的一个肮脏的解决方法是在主数据库中创建该表以允许脚本在其上构建索引并成功。我对此进行了测试,并且有效。整个过程:
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]
去掉-T902启动参数,重启服务器
通过执行清理主数据库
use master; drop table [internal].[object_parameters]; drop schema internal;
如上所述更正第 3188 行后,手动执行 SSIS_hotfix_install.sql。
重启服务器。
在过程结束时执行更正的 SSIS_hotfix_install.sql 的原因是为了防止 dll 中嵌入的错误脚本在后续启动时删除索引,然后 SQL Server 认为升级成功完成。