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:

SSIS package "Package.dtsx" starting.
Information: 0x4004300A at Data Flow Task, DTS.Pipeline: Validation phase is beginning.
Information: 0x4001100A at Package: Starting distributed transaction for this container.
Information: 0x4004300A at Data Flow Task, DTS.Pipeline: Validation phase is beginning.
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属性的更多相关文章

  1. Vue2.0 【第二季】第7节 Component 组件 props 属性设置

    目录 Vue2.0 [第二季]第7节 Component 组件 props 属性设置 第7节 Component 组件 props 属性设置 一.定义属性并获取属性值 二.属性中带' - '的处理方式 ...

  2. vue-learning:34 - component - 内置组件 - 动态组件component 和 is属性

    component动态组件 / is属性 让多个组件使用同一个挂载点,并动态切换,这就是动态组件. 必要条件: 组件标签使用<component></component> 动态 ...

  3. Component 组件props 属性设置

    props定义属性并获取属性值 html <div id="app"> <!-- 注册一个全局逐渐 --> <!-- 注意如果自定义的属性带-像下面这 ...

  4. SSIS 属性:ExecValueVariable

    有些Task组件执行完成之后,会产生输出结果,称作Execution Value,例如,Execute SQL Task在执行完成之后,会返回受影响的数据行数.Task组件的Execution Val ...

  5. SSIS 组件属性整理

    整理SSIS 组件的属性解释及其用法 一,ExecValueVariable属性 有些Task组件执行完成之后,会产生输出结果,称作Execution Value,例如,Execute SQL Tas ...

  6. SSIS中出现数据流数据源假死状态的解决办法

    相信开发过Sql Server SSIS的人都遇到过在数据流中数据源假死的问题,特别是Excel Source特别容易假死,当job执行到数据流中的Excel Source时,既不报错也不执行,也没有 ...

  7. 使用SSIS汇集监控数据

    1.背景 数据库服务器部署有各类巡检脚本,现在想把巡检收集到的数据汇集到一起.Source源对应的是各业务数据库服务器,Destination目标对应的是保存汇集数据的服务器.前期部署的时候已将巡检相 ...

  8. SSIS的 Data Flow 和 Control Flow

    Control Flow 和 Data Flow,是SSIS Design中主要用到的两个Tab,理解这两个Tab的作用,对设计更高效的package十分重要. 一,Control Flow 在Con ...

  9. 【C#】使用IExtenderProvider为控件添加扩展属性,像ToolTip那样

    申明: - 本文适用于WinForm开发 - 文中的“控件”一词是广义上的说法,泛指包括ToolStripItem.MenuItem在内单个界面元素,并不特指继承自Control类的狭义控件 用过To ...

随机推荐

  1. (转)深度分析Linux下双网卡绑定七种模式

    现在一般的企业都会 使用双网卡接入,这样既能添加网络带宽,同时又能做相应的冗余,可以说是好处多多.而一般企业都会使用linux操作系统下自带的网卡绑定模式,当然现在 网卡产商也会出一些针对window ...

  2. 【解题报告】BZOJ2550: [Ctsc2004]公式编辑器

    题意:给定一个可视化计算器的操作序列,包括插入数字.字母.运算符.分数.矩阵以及移动光标.矩阵插入行.插入列,输出操作序列结束后的屏显(数学输出). 解法:这题既可以用来提升OI/ACM写大代码模拟题 ...

  3. linux 匹配字符串是否为数字

    #!/bin/bash ## 方法1 a=1234;echo "$a"|[ -n "`sed -n '/^[0-9][0-9]*$/p'`" ] &&a ...

  4. Java 用自带dom解析器遍历叶子节点内容

    一.XML文件config.xml,内容如下: <?xml version="1.0" encoding="UTF-8" standalone=" ...

  5. 获取edit焦点,打开和关闭软键盘

    打开: et_search.requestFocus(); et_search.setFocusable(true); et_search.setFocusableInTouchMode(true); ...

  6. php CLI 模式下的传参方法

    在CLI模式(命令行界面 Command Line Interface)下,传入参数有如下3种方法: 一. getopt函数(PHP 4 >= 4.3.0, PHP 5) getopt - 从命 ...

  7. Activity类生命周期

    Activity通常就是一个单独的屏幕.每一个活动都被实现为一个独立的类,并且从活动基类中继承而来,活动类将会显示由视图控件组成的用户接口,并对事件作出响应. 从开发者角度看,Activity是一个J ...

  8. JAVA学习博客---2015-8

    八月份的学习博客,今天已经是九月四号了,补上吧.现在我又回到C++了,JAVA的基本的东西都懂了,但是更好的掌握JAVA,我必须原路返回去学习C++,当初为了更快的学JAVA,其实我得C++都是跳着看 ...

  9. tomcat 运行程序很慢 运行一段时间就报错: java.lang.OutOfMemoryError: PermGen space

    java.lang.OutOfMemoryError: PermGen space 全称是Permanent Generation space,是指内存的永久保存区域. 由于这块内存主要是被JVM存放 ...

  10. python 之readability与BeautifulSoup

    以前要采集某个网页,一般做法是写程序源代码爬出来,然后用正则去匹配出来,这种针对指定的网页去爬效果还可以,但是如果是批量的网页这种实现就会变得不现实,在这时候就有readability出手的意义了,r ...