SSIS Component的ValidateExternalMetadata属性
ValidateExternalMetadata Property
Indicates whether the component validates its column metadata against its external data source at design time. When this property is true, the component connects to its external data source during design time and validates the columns in its input or output collections against the columns at the external data source. When set to false, the component does not perform this "connected" validation.

ValidateExternalMetadata Property是Componet的属性,在VS中,出现在Data Flow选项卡中的组件存在该属性。
默认情况下,ValidateExternalMetadata属性是设置为True的,因此任何时候我们打开包、添加组件或者运行包,SSIS都会链接到数据源,并验证外部元数据。当ValidateExternalMetadata属性是设置为False时,SSIS在运行到该组件时才验证数据源,在Desgin time不会验证源数据。
在Design time时,发现SSIS 组件对外部源数据貌似有种缓存机制,不会实时更新metadata。
Most SSIS components which interact with an external system (for example, the Lookup Transform, or Source/Destination components) will define External Metadata Columns. These represent the columns in the table/view/query the component is interacting with. This metadata information gets cached within the package file (.dtsx).
During the Validation phase, a component is supposed to check to make sure that the cached metadata in the package is still in sync with the underlying table/view/query. If there is a mismatch, the component returns a special status (VS_NEEDSNEWMETADATA). When this happens at design-time, SSIS triggers a metadata refresh by calling ReinitializeMetadata(). At runtime, this results in an error.
Because metadata validation can be expensive (large table with a lot of columns, for example), the ValidateExternalMetadata flag can set to false to disable this validation. Typically, you'd only do this when you are certain that your package and underlying table/view/query will remain in sync.
适用的case是,一个Staging表在Design time是不存在的,当package runtime时,该组件的上流组件创建Staging表,当package运行到该组件时,由于Staging表已经存在,该组件验证通过,能够运行成功。
如果开启DTC Transaction,ValidateExternalMetadata Property设置不当会导致死锁,亲测,确实会导致死锁,在debug时,死锁不会自动解除。详细情况请参考:https://support.microsoft.com/en-us/kb/2253391
The execution of a SQL Server Integration Services (SSIS) package stops responding when you enable DTC transactions for a package in Microsoft SQL Server
SYMPTOMS
Consider the following scenario:
- You create a SQL Server Integration Services (SSIS) package in Microsoft SQL Server 2005, in SQL Server 2008, or in SQL Server 2008 R2.
- The SSIS package contains a data flow task and some other tasks.
- The TransactionOption property of the SSIS package is set to Required to use DTC transactions.
- The other tasks run in a DTC transaction before the execution of the data flow task.
- You add a component to the data flow task.
- The ValidateExternalMetadata property of a data flow component is set to True.
- The data flow task contains an OLE DB Destination component that has the data access mode set to Table or view, or to Table name or view name variable.
When you run the package in this scenario, the execution stops responding. Additionally, if you debug the SSIS package in Visual Studio, you receive messages that resemble the following in the Progress view:
CAUSE
This problem occurs because the connection in the data flow is not enrolled in the DTC transaction. This causes the execution of the sp_cursoropen stored procedure to be blocked. This is a design feature because a connection cannot be enrolled in a DTC transaction during the validation process. In the scenario that is described in the "Symptoms" section, the validation process of a data flow component is blocked when you run the package because the connection in the data flow task has not been enrolled in the DTC transaction.
RESOLUTION
To resolve this problem, use one of the following methods:
- Set ValidateExternalMetadata for all component in the data flow task to False
- Set the data access mode of the OLE DB Destination component to one of the following modes:
- Table or view – fast load
- Table name or view name variable – fast load
- SQL command
MORE INFORMATION
The Table or View data access mode is blocked but other data access modes are not blocked because the different commands issued by the data provider for each data access mode. To obtain more details about this issue, use SQL Server Profiler to see the different commands issued by the data provider.
For more information about how to use SQL Server Profiler, visit the following Microsoft Developer Network (MSDN) website: Using SQL Server Profiler
For more information about how to troubleshoot SSIS packages, visit the following Microsoft Developer Network (MSDN) website: Troubleshooting Package Development
SSIS Component的ValidateExternalMetadata属性的更多相关文章
- Vue2.0 【第二季】第7节 Component 组件 props 属性设置
目录 Vue2.0 [第二季]第7节 Component 组件 props 属性设置 第7节 Component 组件 props 属性设置 一.定义属性并获取属性值 二.属性中带' - '的处理方式 ...
- vue-learning:34 - component - 内置组件 - 动态组件component 和 is属性
component动态组件 / is属性 让多个组件使用同一个挂载点,并动态切换,这就是动态组件. 必要条件: 组件标签使用<component></component> 动态 ...
- Component 组件props 属性设置
props定义属性并获取属性值 html <div id="app"> <!-- 注册一个全局逐渐 --> <!-- 注意如果自定义的属性带-像下面这 ...
- SSIS 属性:ExecValueVariable
有些Task组件执行完成之后,会产生输出结果,称作Execution Value,例如,Execute SQL Task在执行完成之后,会返回受影响的数据行数.Task组件的Execution Val ...
- SSIS 组件属性整理
整理SSIS 组件的属性解释及其用法 一,ExecValueVariable属性 有些Task组件执行完成之后,会产生输出结果,称作Execution Value,例如,Execute SQL Tas ...
- SSIS中出现数据流数据源假死状态的解决办法
相信开发过Sql Server SSIS的人都遇到过在数据流中数据源假死的问题,特别是Excel Source特别容易假死,当job执行到数据流中的Excel Source时,既不报错也不执行,也没有 ...
- 使用SSIS汇集监控数据
1.背景 数据库服务器部署有各类巡检脚本,现在想把巡检收集到的数据汇集到一起.Source源对应的是各业务数据库服务器,Destination目标对应的是保存汇集数据的服务器.前期部署的时候已将巡检相 ...
- SSIS的 Data Flow 和 Control Flow
Control Flow 和 Data Flow,是SSIS Design中主要用到的两个Tab,理解这两个Tab的作用,对设计更高效的package十分重要. 一,Control Flow 在Con ...
- 【C#】使用IExtenderProvider为控件添加扩展属性,像ToolTip那样
申明: - 本文适用于WinForm开发 - 文中的“控件”一词是广义上的说法,泛指包括ToolStripItem.MenuItem在内单个界面元素,并不特指继承自Control类的狭义控件 用过To ...
随机推荐
- [转]如何拷贝一个 SQL Server 的表
这篇短文将介绍几种拷贝 SQL Server 表的方法.第一种方式是最简单的在同一个数据库里将表拷贝到另外一个表.你需要记住的是,拷贝表的时候并不会拷贝表的约束和索引.下面是代码模板和简单的使用方法: ...
- angular中的 ng-change
<!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...
- col-md-*,col-xs-*
class属性 col-md-*,md 表示 medium (中等的),* 代表一个数字,它指定了这个元素所占的列宽. 在中等大小的屏幕上(例如笔记本电脑),元素的列宽被指定了. col-xs-* , ...
- [UCSD白板题] Sorting: 3-Way Partition
Problem Introduction The goal in this problem is to redesign a given implementation of the randomize ...
- VS2013安装部署项目
打开vs2013/2015菜单扩展和更新,查找Installer,找到Microsoft Visual Studio 2015 Installer Projects并下载安装. 安装之后模板中即有“安 ...
- 绿色ip扫描工具
ip扫描,可以扫描一下自己的局域网有多少设备在线,有没有在蹭网.优点在于:短小精悍,快速,不用安装. 其实,我自己也写过一个但是没有这个精致,感兴趣的可以一起讨论. 下载地址:32位 64位 我的淘宝 ...
- 【转】linux shell实现随机数多种方法(date,random,uuid)
在日常生活中,随机数实际上经常遇到,想丢骰子,抓阄,还有抽签.呵呵,非常简单就可以实现.那么在做程序设计,真的要通过自己程序设计出随机数那还真的不简单了.现在很多都是操作系统内核会提供相应的api,这 ...
- 【转】【WebDriver】不可编辑域和日历控件域的输入 javascript
http://blog.csdn.net/fudax/article/details/8089404 今天用到日历控件,用第一个javascript执行后页面上的日期控件后,在html中可以看到生效日 ...
- ubuntu 14.04 下svn + apache2 配置
1.svn的配置 sudo apt-get install subversion // 安装svn mkdir /home/svn // 创建仓库 svnadmin create /home/svn/ ...
- 【Win10 UWP】QQ SDK(二):SDK的回调处理
上一讲,我们介绍了QQ SDK的使用方法,请看<[Win10 UWP]QQ SDK(一):SDK基本使用方法> 一. 回调的基本形式 从前面的介绍中我们知道,我们的应用和QQ客户端之间需要 ...