使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

Microsoft 将 Microsoft SQL Server 2012 修复分发为一个可下载文件。 由于修补程序是累积的,因此每个新版本都包含以前的 SQL Server 2012 修复版本附带的所有修补程序和所有安全修补程序。

症状

请考虑以下情况:

  • 在 Microsoft SQL Server 2012 中的数据质量客户端创建一个或多个数据质量项目。

  • 为 SQL Server 2012 安装累积更新1(SQL Server 2012 CU1),然后运行 DQSInstaller 文件以升级 Data Quality Services (DQS)目录并添加新对象。

  • 您尝试使用数据质量客户端删除其中一个已创建的数据质量项目。

在此方案中,数据质量客户端停止响应,SQL Server 数据库引擎进入无限循环。 此外,sqlservr 进程还体验高 CPU 使用率。 注意

  • 若要从此问题中恢复,请重新启动数据质量客户端和 DQS。

  • 仅当在安装 SQL Server 2012 CU1 之前创建了数据质量项目时,才会出现此问题。

原因

之所以会出现此问题,是因为更新循环计数器所导致的系统存储过程中出现无限循环。注意出现此问题的原因是 SQL Server 2012 CU1 中的回归。

解决方案

累积更新信息

SQL Server 2012 的 Service pack 信息

若要解决此问题,请获取最新的 SQL Server 2012 服务包。有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2755533 如何获取最新的 SQL Server 2012 服务包

SQL Server 2012

此问题的修补程序首次在 SQL Server 2012 的累积更新2中发布。有关如何获取此累积更新包的 SQL Server 的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2703275 SQL Server 2012 累积更新包2注意 由于这些版本是累积的,因此每个新的修复版本都包含了以前的 SQL Server 修复版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2692828 在 SQL Server 2012 发布后发布的 SQL Server 2012 版本

解决方法

要解决此问题,请使用下列方法之一。方法 1若要添加一个哑元过程以使存储过程无限循环继续,然后正确退出,请按照下列步骤操作:

  1. 运行以下查询以确定你尝试删除的受影响项目的架构名称:

    SELECT 'KnowledgeManagement'+CAST(ID AS NVARCHAR) AS SchemaName, Name FROM DQS_MAIN.dbo.A_KNOWLEDGEBASE WHERE TYPE=2
  2. 使用返回的 SchemaName 值,然后在 SQL Server Management Studio 中运行与以下内容类似的语句,以提供匹配的架构名称和数据质量项目 ID。 将为架构和相应的数据质量项目创建新的伪过程。 因此,无限循环会正常继续。

    USE DQS_PROJECTSGOCREATE PROCEDURE DQProject<ID>.NewIndexParseTrigramsFromLexiconAS BEGINPRINT 'THIS IS A DUMMY PROCEDURE TO MAKE DELETE WORK for Microsoft KB Article 2705571';END

    注意 <ID> 表示正在删除的数据质量项目的内部 ID。

  3. 验证是否按预期从数据质量客户端中删除数据质量项目。

方法2如果必须快速终止循环过程以节省 CPU 资源,请运行以下语句来确定正确的会话。 但是,终止循环过程不会彻底删除数据质量项目。 以下 Transact-sql 语句可帮助识别和终止正确的会话。 如果正在运行多个来自数据质量客户端的会话,则可能需要多次运行语句:

DECLARE @session smallint, @text nvarchar(2000), @killcommand nvarchar(200)SELECT TOP 1 @session=s.session_id, @text=st.textFROM sys.dm_exec_sessions sFULL OUTER JOIN sys.dm_exec_requests r ON s.session_id=r.session_idCROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS stWHERE program_name like 'DQ Services Client: Client Id = %, KB Id = %, Proxy = KnowledgebaseManagementEntryPointClient'AND s.status='running';SELECT 'Killing this DQS session:', @session SessionID, @text QueryText;SET @killcommand=N'Kill '+ cast(@session as nvarchar)+';'EXEC sp_executesql @killcommand;

注意 如果使用方法2来终止 DQS 连接,则在数据质量客户端中可能会收到以下错误消息:

SQL Server Data Quality Services--------------------------------------------------------------------------------<MessageId>:发生了 ApplicationUnhandledExceptionAn 未处理的异常。 有关更多详细信息,请参阅 Data Quality Services 客户端日志--------------------------------------------------------------------------------。 SqlClient (0x80131904):当前命令出现严重错误。 应丢弃结果(如果有)。

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

参考

有关如何升级 DQS 的详细信息,请转到以下 Microsoft TechNet 网站:

如何升级 DQS

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×