AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 683174
Accepted
vaso
vaso
Asked: 2015-04-17 03:11:19 +0800 CST2015-04-17 03:11:19 +0800 CST 2015-04-17 03:11:19 +0800 CST

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

  • 772

如果您的服务器上有 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. 有谁知道如何绕过该脚本的执行并让服务器启动?

service-pack
  • 2 2 个回答
  • 6030 Views

2 个回答

  • Voted
  1. Best Answer
    Michael Barrett
    2015-04-17T04:56:58+08:002015-04-17T04:56:58+08:00

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

    1. 开始 -> 所有程序 -> Microsoft SQL Server 2008 R2 或安装的最高版本 -> 配置工具 -> SQL Server 配置管理器

    2. 在 SQL Server 配置管理器中,单击 SQL Server 服务。

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

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

    5. 单击确定。

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

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

    • 10
  2. vaso
    2015-04-17T18:56:56+08:002015-04-17T18:56:56+08:00

    我尝试了建议的程序 - 它不起作用,这是可以预见的。在随后启动时,在删除 -T902 跟踪标志后,服务器尝试执行编译成 dll 的相同脚本(见上文),我无法修改。该脚本很愚蠢,没有检测到其中包含的更改已被应用。我能想到的一个肮脏的解决方法是在主数据库中创建该表以允许脚本在其上构建索引并成功。我对此进行了测试,并且有效。整个过程:

    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 的原因是为了防止 dll 中嵌入的错误脚本在后续启动时删除索引,然后 SQL Server 认为升级成功完成。

    • 4

相关问题

  • SQL Server 2008 Service Pack 无法识别用于升级的数据库实例

  • 添加 Windows 组件后,我是否需要重新安装其最新的服务包?

  • 补丁后,安装从 OS CD 读取的项目。服务包重新应用?

  • 无法安装 SQL Server 2005 Service Pack 3

  • 在部署 Vista / Server2008 SP2 之前我们应该等待多长时间

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve