我正在尝试为 SQL Server 2016 安装新的 SP2,但它在安装过程中失败并出现引擎错误。这是我可以在错误日志中看到的>
错误:468,严重性:16,状态:9。
无法解决等于操作中“Latin1_General_CI_AS”和“SQL_Latin1_General_CP1_CI_AS”之间的排序规则冲突。
失败的一批 t-sql 语句:
CREATE PROCEDURE sp_sqlagent_get_perf_counters @all_counters BIT = 0 AS BEGIN ...错误:912,严重性:21,状态:2。
数据库“master”的脚本级别升级失败,因为升级步骤“msdb110_upgrade.sql”遇到错误 200,状态 7,严重性 25。这是一个严重的错误情况,可能会干扰常规操作,数据库将脱机。如果在升级“主”数据库期间发生错误,它将阻止整个 SQL Server 实例启动。检查以前的错误日志条目是否有错误,采取适当的纠正措施并重新启动数据库,以便脚本升级步骤运行完成。
错误:3417,严重性:21,状态:3。
无法恢复主数据库。SQL Server 无法运行。从完整备份中恢复 master、修复它或重建它。有关如何重建 master 数据库的详细信息,请参阅 SQL Server 联机丛书。
SQL Server 关闭已启动
主数据库运行“Latin1_General_CI_AS”,MSDB(和其他数据库)运行“SQL_Latin1_General_CP1_CI_AS”。
我有服务器上所有数据库的新备份,包括 master 和 msdb。
我很想尝试恢复主 master,如https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/restore-the-master-database-transact-sql 中所示?视图=sql-server-2017
但我正在努力确保它能够真正发挥作用,而不仅仅是让情况变得更糟。
如何让我的 SQL Server 备份并运行?
编辑:我已经像这样启动了 mssqlserver 服务:
NET START MSSQLSERVER /T902
这使服务器启动,我查看了 msdb110_upgrade.sql,发现我添加了很多缺少的“COLLATE DATABASE_DEFAULT”。
但它没有接受我的改变。
我在旧版本的其他版本的 SQL Server 上看到了这个错误。
在我的情况下,它是由角色的所有者引起的,或者模式不是默认值:像 db_datareader 这样的东西是由用户帐户授权的(他们不再拥有系统管理员)
如何恢复?
不幸的是,我现在不记得确切的细节了。
这是我使用 SQL Server 20 年来唯一一次...
这回答了我的问题:
有人从具有不同排序规则的另一台服务器恢复了 MSDB。
我完全重新安装了 SQL Server。
现在我知道整个 SQL Server 都在版本控制之下。:-)