首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ValidateExternalMetadata属性,这到底是做什么的?

ValidateExternalMetadata属性,这到底是做什么的?
EN

Stack Overflow用户
提问于 2010-07-21 07:32:08
回答 2查看 27.2K关注 0票数 3

我有一个包,它从表中读取数据,并基于列值将记录存储在另外两个表中。包使用事务所需的属性。直到最近我在源表上创建了一个非聚集索引以提高性能之前,它一直运行平稳。在显示“验证已经启动”后,包拒绝继续执行。

有两件事解决了这个问题:

  1. 使用聚集索引而不是非聚集索引。
  2. 将ValidateExternalMetadata属性设置为False

我不需要两者都用,但其中一个,而且包运行顺利。我选择了选项1,但我不明白在引擎盖下发生了什么。我的问题是,

  1. 除了检查列元数据外,当您将属性变为false时,究竟会发生什么事情?
  2. 为什么非聚集索引会导致验证问题?

PS:在之前的表格上没有索引。

EN

回答 2

Stack Overflow用户

发布于 2013-05-09 21:06:27

前面的答案中的KB链接到应该可以解决这个特定的问题,但是并没有完全解释ValidateExternalMetadata标志的功能。

大多数与外部系统交互的SSIS组件(例如,查找转换或源/目标组件)将定义外部元数据列。它们表示与组件交互的表/视图/查询中的列。此元数据信息被缓存在包文件(.dtsx)中。

验证阶段,组件应该检查以确保包中缓存的元数据仍然与基础表/视图/查询同步。如果存在不匹配,则组件返回特殊状态(VS_NEEDSNEWMETADATA)。当这种情况发生在设计时,SSIS通过调用ReinitializeMetadata()触发元数据刷新。在运行时,这会导致错误。

由于元数据验证可能很昂贵(例如,包含大量列的大型表),因此可以将ValidateExternalMetadata标志设置为false以禁用此验证。通常,只有当您确信包和基础表/视图/查询保持同步时,才会这样做。

票数 13
EN

Stack Overflow用户

发布于 2010-07-23 14:04:29

这可能是这样的解释:

http://support.microsoft.com/kb/2253391

在Microsoft中为包启用DTC事务时,Server集成服务(SSIS)包的执行将停止响应

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3297097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档