症状
请考虑以下情况:
-
你有一个 Microsoft SQL Server 2008 R2 实例,该实例托管用户控制点 (UCP) 。
-
在实例上安装 SQL Server 2008 R2 的累积更新包 1。
在此方案中,安装成功。 但是,SQL Server服务无法启动。 此外,SQL Server Errorlog 文件中记录了以下错误消息:
<Date> <Time> spid7s 正在执行 [sysutility_mdw].sysutility_ucp_core.sp_initialize_mdw_internal<Date><Time> spid7s SQL Server阻止访问组件“代理 XP”的过程“sys.xp_qv”,因为此组件作为此服务器安全配置的一部分关闭。 系统管理员可以使用 sp_configure 启用“代理 XP”的使用。 有关启用“代理 XP”的详细信息,请参阅 SQL Server 联机丛书中的“外围应用配置”。<日期><时间> spid7s 错误:15281,严重性:16,状态:1。<Date><Time> spid7s SQL Server阻止访问组件“代理 XP”的过程“sys.xp_qv”,因为此组件作为此服务器的安全配置的一部分关闭。 系统管理员可以使用 sp_configure 启用“代理 XP”的使用。 有关启用“代理 XP”的详细信息,请参阅 SQL Server 联机丛书中的“外围应用配置”。<Date><time> spid7s 错误: 912,严重性: 21,状态: 2。<日期><时间> spid7s 数据库“master”的脚本级别升级失败,因为升级步骤“sqlagent100_msdb_upgrade.sql”遇到错误 15281,状态 1,严重性为 16。 这是一种严重的错误情况,可能会干扰常规操作,数据库将脱机。 如果在升级“master”数据库期间发生错误,则会阻止整个 SQL Server 实例启动。 检查前面的错误日志条目,采取适当的纠正措施,并重新启动数据库,以便脚本升级步骤运行到完成。<Date><Time> spid7s 错误: 3417,严重性: 21,状态: 3。<Date><time> spid7s 无法恢复 master 数据库。 SQL Server无法运行。 从完整备份还原主数据库、对其进行修复或重新生成。 有关如何重新生成 master 数据库的详细信息,请参阅 SQL Server 联机丛书。<日期><时间> spid7s SQL 跟踪因服务器关闭而停止。 跟踪 ID = “1”。 这只是一条信息性消息;无需用户操作。
将承载 UCP 的 SQL Server 2008 R2 候选版本 (RC) 实例升级到 SQL Server 2008 R2 的发布版本时,也可能会出现此问题。
原因
出现此问题的原因是,SQL Server 2008 R2 运行 msdb 数据库的升级脚本时未启用代理 XP 选项。此脚本在SQL Server服务启动时运行。 该脚本运行与 UCP 相关的存储过程。 此外,存储过程要求启用代理 XP 选项。
解决方法
累积更新信息
此问题的修补程序首次在累积更新 2 中发布。 有关如何为 SQL Server 2008 R2 获取此累积更新包的详细信息,请单击以下编号以查看Microsoft知识库中的文章:
2072493 SQL Server 2008 R2Note 的累积更新包 2 由于内部版本是累积的,因此每个新修补程序版本都包含上一个SQL Server 2008 R2 修补程序版本中包含的所有修补程序和所有安全修补程序。 建议考虑应用包含此修补程序的最新修补程序版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
981356 SQL Server 2008 R2 发布后发布的SQL Server 2008 R2 版本
解决方法
注意 如果尚未安装累积更新包 1,则应按照“解决方法”部分安装累积更新包 2。 此问题在 SQL Server 2008 R2 的累积更新包 2 及更高版本中不存在。如果在安装累积更新包 1 后遇到此问题,请按照以下步骤解决此问题:
-
在 SQL Server 2008 R2 的实例上启用跟踪标志 902。 为此,请按照下列步骤操作:
-
打开 SQL Server 配置管理器。
-
在“SQL Server 配置管理器”中,单击“SQL Server服务”。
-
双击 SQL Serverservice。
-
在“SQL Server属性”对话框中,单击“高级”选项卡。
-
单击“ 高级 ”选项卡时,找到 “启动参数” 项。
-
将 ;-T902 添加到现有字符串值的末尾,然后单击“ 确定”。
-
-
右键单击 SQL Serverservice,然后单击“ 启动”。
-
如果SQL Server 代理服务正在运行,请右键单击SQL Server 代理服务,然后单击“停止”。
-
打开SQL Server Management Studio,然后连接到 SQL Server 2008 R2 的实例。
-
运行以下语句:
EXEC sp_configure“show advanced”, 1; 配置; EXEC sp_configure“允许更新”, 0; 配置; EXEC sp_configure“Agent XPs”, 1; 配置; 去
-
在SQL Server 配置管理器中,右键单击 SQL Server 服务,然后单击“停止”。
-
删除 SQL Server 2008 R2 实例上的跟踪标志 902。 为此,请从步骤 1f 中更新的字符串值中删除 ;-T902。
-
右键单击 SQL Serverservice,然后单击“ 启动”。
-
右键单击SQL Server 代理服务,然后单击“启动”。
-
在 SQL Server Management Studio 中,重新连接到 SQL Server 2008 R2 的实例。
-
在“对象资源管理器”中,展开“管理”,右键单击“数据收集”,然后单击“启用数据收集”。注意 如果已启用数据收集,则“启用数据收集”项不可用。
注意 连接到 SQL Server Management Studio 中的 SQL Server 2008 R2 实例时,可能会收到以下错误消息:
错误:18401用户登录 名<登录名>失败。 原因:服务器处于脚本升级模式。 目前只有管理员才能连接。
此错误消息指示SQL Server 2008 R2 正在完成累积更新包 1 的安装。 如果收到此错误消息,请等待几分钟,然后再次连接到 SQL Server 2008 R2 的实例。
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
参考
有关SQL Server的增量服务模型的信息,请单击下面的序列号以查看Microsoft知识库中的文章:
935897 SQL Server团队提供了增量服务模型,用于为报告的问题提供修补程序 有关SQL Server更新的命名架构的详细信息,请单击以下序列号以查看Microsoft知识库中的文章:
822499 Microsoft SQL Server软件更新包的命名架构有关软件更新术语的详细信息,请单击以下端口号以查看Microsoft知识库中的文章: