启动 SQL Server 2017 服务时出错。错误代码 3417

Beg*_*ner 16 sql-server character-set encoding sql-server-2017

我的计算机上安装了 SQL Server 2017。这是SELECT @@VERSION返回的内容:

Microsoft SQL Server 2017 (RTM-GDR) (KB4293803) - 14.0.2002.14 (X64) 2018 年 7 月 21 日 07:47:45 版权所有 (C) 2017 Microsoft Corporation Enterprise Edition(64 位),Windows 10 Enterprise 10.0(Build 171) )`

直到昨天它都运行良好。突然SQL SERVER Service没跑了。当我想手动运行该服务时,它显示3417 error. 当我检查事件日志时,我看到了这个错误:

数据库 'master' 的脚本级升级失败,因为升级步骤 'msdb110_upgrade.sql' 遇到错误 200,状态 7,严重性 25。这是一个严重的错误情况,可能会干扰正常操作,数据库将脱机。如果在升级“master”数据库期间发生错误,它将阻止整个 SQL Server 实例启动。检查以前的错误日志条目是否有错误,采取适当的纠正措施并重新启动数据库,以便脚本升级步骤运行完成。`

经过一番谷歌搜索后,我发现我可以运行它/T902 switch并尝试解决问题。但没有任何解决方案对我有用。所以我安装了相同SQL SERVER 2017和恢复数据库的另一个实例。现在新安装的实例也有同样的问题。

可能是什么问题呢?

更新 这是 SQL Server 的完整错误日志。

2018-09-17 13:06:47.29 spid6s 配置选项“显示高级选项”从 1 更改为 1。运行 RECONFIGURE 语句进行安装。

2018-09-17 13:06:47.29 spid6s 配置选项“显示高级选项”从 1 更改为 1。运行 RECONFIGURE 语句进行安装。

2018-09-17 13:06:47.29 spid6s 配置选项 'Agent XPs' 从 1 更改为 1。运行 RECONFIGURE 语句进行安装。

2018-09-17 13:06:47.29 spid6s 配置选项 'Agent XPs' 从 1 更改为 1。运行 RECONFIGURE 语句进行安装。

2018-09-17 13:06:47.29 spid6s 创建 SSIS 文件夹...

2018-09-17 13:06:47.30 spid6s 删除程序 [dbo].[sp_syscollector_get_instmdw]

2018-09-17 13:06:47.30 spid6s 创建过程 [dbo].[sp_syscollector_get_instmdw]...

2018-09-17 13:06:47.30 spid6s 删除程序 [dbo].[sp_syscollector_upload_instmdw]

2018-09-17 13:06:47.30 spid6s 创建程序 [dbo].[sp_syscollector_upload_instmdw]...

2018-09-17 13:06:47.30 spid6s 从磁盘上传数据收集器包:c:\Program Files\Microsoft SQL Server\MSSQL14.SQL2017\MSSQL\Install\SqlTraceCollect.dtsx

2018-09-17 13:06:47.30 spid6s 从磁盘上传数据收集器包:c:\Program Files\Microsoft SQL Server\MSSQL14.SQL2017\MSSQL\Install\SqlTraceCollect.dtsx

2018-09-17 13:06:47.30 spid6s 错误:2775,严重性:17,状态:12。

2018-09-17 13:06:47.30 spid6s 服务器不支持代码页 65001。

2018-09-17 13:06:47.30 spid6s 错误:912,严重性:21,状态:2。

2018-09-17 13:06:47.30 spid6s 数据库 'master' 的脚本级别升级失败,因为升级步骤 'msdb110_upgrade.sql' 遇到错误 200,状态 7,严重性 25。这是一个严重的错误情况,可能会干扰正常操作并且数据库将脱机。如果在升级“master”数据库期间发生错误,它将阻止整个 SQL Server 实例启动。检查以前的错误日志条目是否有错误,采取适当的纠正措施并重新启动数据库,以便脚本升级步骤运行完成。

2018-09-17 13:06:47.30 spid6s 错误:3417,严重性:21,状态:3。

2018-09-17 13:06:47.30 spid6s 无法恢复主数据库。SQL Server 无法运行。从完整备份恢复主文件、修复它或重建它。有关如何重建 master 数据库的详细信息,请参阅 SQL Server 联机丛书。

2018-09-17 13:06:47.30 spid6s SQL Server 关闭已启动

2018-09-17 13:06:47.30 spid6s SQL 跟踪由于服务器关闭而停止。跟踪 ID = '1'。这只是一条信息性消息;无需用户操作。

更新 这一行有话要说。The code page 65001 is not supported by the server.我最近的 Windows 更新为Version 1803 (OS Build 17134.285). 此更新后,某些应用程序文本已更改为未知字符。这可能是问题的原因吗?

代码页的注册表图像

Sha*_*nky 19

我首先要说的是,您在 Windows 10(客户端操作系统)上运行 SQL Server 2017 不受支持,请参阅SQL Server 2017 的硬件和软件要求。通过在客户端操作系统上运行它,您正在浪费企业版的功能和大量资金。

另外,我相信此类问题主要是错误,因此我建议您应用最新的SQL Server 2017 CU 10。如果这能解决您的问题,请告诉我。如果您想尝试解决此问题,请参阅此博客

正如 OP 所确认的,即使在应用 SQL Server 2017 CU10 后问题也没有解决。

编辑:问题从以下语句开始

2018-09-17 13:06:47.30 spid6s 服务器不支持代码页 65001。

code page65001种手段UTF-8编码,这是不是SQL Server支持这个我相信是造成该问题。这绝对是一个BUG,我很困惑为什么这仍然没有在CU10中修复。升级过程正在尝试bulk load使用 UTF 8 编码的数据,但由于 SQL Server 不支持它,所以它失败了。

您有 Windows 10 转到control pane,现在选择region and language小程序,它可能只region适合您在 Windows 10 上。转到administrative tab选项卡的下部,您必须单击change system Locale,然后继续激活/选择Beta:UTF8 支持并启动窗户机。下面是我的 Windows 7 机器上的选项。对于 Windows 10,该选项可能几乎相同。

在此处输入图片说明

按照 OP 的要求,整个问题在应用某些操作系统补丁后就开始了。取消选中“Beta:UTF8 支持”后问题已解决。问题似乎是两件事。

  1. OP 已经检查了 Beta:UTF8 支持并且运行良好,直到他应用了改变“某些东西”的操作系统补丁。

  2. 在已经存在操作系统补丁的控制面板中取消选中 Beta:UTF8 Support 后问题已解决。

SQL Server 在 Beta:UTF8 支持下运行良好,但是当应用操作系统补丁时,“某些东西”以这样一种方式中断,即 SQL Server 主数据库无法联机,该消息不支持代码页 65001。从控制面板禁用 Beta:UTF8 解决了该问题。尽管我相信这更像是一种解决方法,并且 MS 需要为此提供适当的知识库文章。

PS:我还发现已经针对此问题提出了Connect Bug。当我说不支持(用于在客户端操作系统上安装企业版)时,并不意味着您无法运行此基础架构,这仅意味着如果您遇到一些“错误”或出现意外故障,您只能靠自己。如果您就任何此类问题向 MS 提出案例,我相信他们会指出这一点。

  • 取消选中“Beta:UTF8 支持”后问题已解决。感谢@Shanky,我在这个问题上浪费了两天时间,而你却挽救了我的一天。 (2认同)