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

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

症状

请考虑以下情况:

  • 你拥有在 Microsoft SQL Server 2008 R2 中具有基于域的属性的 Master Data Services (MDS)模型和实体。 基于域的属性设计为自引用同一属性。例如,你拥有一个具有 ManagerName 属性的 Employee 实体。 ManagerName属性指的是同一员工实体本身。注意 经理也是一种员工。

  • 在属性上定义了一个派生层次结构,用于显示基于域的属性的递归父/子关系。

  • 将包含一个或多个循环引用的数据值加载到 MDS 暂存表中。 此行为会导致循环引用,并且属性中的第一个节点不是圆圈的一部分。例如,以下数据模式显示循环引用。 但是,Member1 成员值不是圆圈的一部分:

    Member1--管理器属性 >--> Member3--管理器属性--> Member2--Member3 属性-->

    insert into mdm.tblStgMemberAttribute(ModelName, EntityName, MemberType_ID, MemberCode, AttributeName, AttributeValue, Status_ID)Values ('EntityTest', 'ModelTest', 1, 'Member3', 'Manager', 'Member2', 0),('EntityTest', 'ModelTest', 1, 'Member2', 'Manager', 'Member3', 0),('EntityTest', 'ModelTest', 1, 'Member3', 'Manager', 'Member2', 0),('EntityTest', 'ModelTest', 1, 'Member2', 'Manager', 'Member1', 0)('EntityTest', 'ModelTest', 1, 'Member1', 'Manager', 'NULL', 0)
  • 你可以使用以下方法之一将数据值加载到实体中,方法是使用 MDS 暂存进程:

    • 运行 Exec [mdm]。 [udpStagingSweep] 过程,使用必要的参数处理暂存数据。

    • 单击 " 集成管理 " 以访问 MDS 网站主页。 在 " 导入导出 " 页面上的 " Unbatched 暂存记录 " 部分标题下,单击 齿轮图标 以处理特定模型和版本的记录。

在这种情况下,当后台进程内部调用 [mdm] 时,暂存过程中的后台进程可能会遇到无限循环 。 [udpMemberRecursiveCircularCheck] 过程。

原因

出现此问题的原因是 udpStagingSweep 和 udpStagingMemberAttributeSave 过程为每个暂存行调用一次 udpMemberRecursiveCircularCheck 过程。 此行为应检查基于域的属性值,如果暂存行与现有数据一起产生循环引用,则返回错误。 选中所有暂存行后,您将收到以下结果:

  • 将应用没有错误的暂存行。

  • 带有错误的暂存行记录了错误代码。

如果 "症状" 部分中所述的条件为 true,则 [mdm]. [udpMemberRecursiveCircularCheck] 过程将无限期地循环,直到服务器资源用尽或发生超时。

解决方案

累积更新信息

SQL Server 2008 R2 Service Pack 1

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

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

2567616 在发布 SQL Server 2008 R2 Service Pack 1 之后发布的 SQL Server 2008 R2 版本

状态

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

解决方法

若要解决此问题,请使用以下某种方法:

  • 若要避免此问题,请按照下列步骤操作:

    1. 在运行暂存过程之前,手动查看要插入到暂存表中的成员数据值。

    2. 请确保所有基于域的属性的所有成员值不包含 "症状" 部分中所述的循环引用

  • 当出现 "症状" 部分中所述的问题时,请按照以下步骤解决此问题:

    1. 标识在无限循环中运行的会话。

    2. 终止会话以停止循环。

    3. 再次处理循环引用之前,删除临时表中的循环引用值。

注意

  • 若要确定要终止的会话,请使用以下方法之一:

    • 在 Microsoft SQL Server Management Studio 中使用活动监视器。

    • 从 sysprocesses 或 sys.dm_exec_requests 动态管理视图(DMV)中进行选择,以标识在 CPU 和时间快速递增的 MDS 数据库内工作的会话。 请确保在会话上运行的当前查询与 "原因" 部分中所述的过程名称相匹配。

  • 若要标识会话的当前正在运行的过程,请使用以下方法之一:

    • 在活动监视器进程列表中的每个进程上右键单击 " 详细信息 " 菜单。

    • 使用以下参数之一:

      • DBCC INPUTBUFFER (spid)命令与会话 ID 一起提供。

      • 使用 DMV 输出时, SELECT * FROM sys.dm_exec_sql_text (sqlhandle)函数与匹配的 sql 句柄参数一起使用。

参考

有关如何在 SQL Server Management Studio 中打开活动监视器的详细信息,请访问以下 MSDN 网站:

如何在 SQL Server Management Studio 中打开活动监视器有关 KILL 语法的详细信息,请访问以下 MSDN 网站:

有关 KILL 语法的常规信息有关 Sys.dm_exec_requests DMV 的详细信息,请访问以下 MSDN 网站:

有关 sys.dm_exec_requests DMV 的常规信息有关 Sys.dm_exec_sql_text DMV 的详细信息,请访问以下 MSDN 网站:

有关 sys.dm_exec_sql_text DMV 的常规信息有关 DBCC INPUTBUFFER 命令的详细信息,请访问以下 MSDN 网站:

有关 DBCC INPUTBUFFER 命令的常规信息有关 SQL Server 的增量服务模型的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

935897 从 SQL Server 团队提供的增量服务模型可提供报告问题的修补程序有关 SQL Server 更新的命名架构的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

822499 Microsoft SQL Server 软件更新程序包的新命名架构有关软件更新术语的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

824684 用于描述 Microsoft 软件更新的标准术语的说明

需要更多帮助?

需要更多选项?

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

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

此信息是否有帮助?

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

谢谢您的反馈!

×