1,SSIS的组件属性ValidateExternalMetadata
如果一个Destination组件使用的是上游创建的staging table,那么必须设置 ValidateExternalMetadata=false,这样组件对staging table的ExternalMetadata的检查延迟组件运行时。
2,ExternalMetadata是外部数据源的Metadata,数据源组件需要从外部db中获取Column的Name,DataType,Length,Scale,Precision,CodePage,SortKeyPosition属性。可以通过数据源组件的AdvancedEditor查看ExternalMetadata。
ExternalMetadata属性示例
数据类型numeric(10,3),其Precision是10,Scale是3.
Nvarchar(10),其Lenght是10,对于Unicode,不需要CodePage属性。
Varchar(10),其length是10,CodePage是字符集所属的语种。936 —简体中文(GBK),1252 —西欧拉丁字母ISO-8859-1(就是常用的英语)
3,数据源组件有输入和输出,输入是External Metadata,输出是数据的Metadata和数据,可以通过Input and Output Properties选项卡查看详细的信息。
OLEDB Source Output是OLEDB数据源组件的的Output 数据流,点击名称会显示Common Properties。
IsSorted属性Indicates whethere the data in the output from the componenet is sorted.
如果OLEDB的输入流已经排过序,即External Data使用sql command的orderby clause,那么可以设置IsSorted属性为true,并在Output Columns中设置SortKeyPosition属性,设置output column在Orderby clause的顺序序号,序号从1开始,依次递增。
例如 OLEDB Source的sql command是
select * from dbo.TableName order by col_1,col_2,col_3
这是已经排序的数据流,设置OLEDB Source Output的IsSorted属性为true,并逐个设置Output Columns中的Col_1的SortKeyPosition=1,Col_2的SortKeyPosition=2,Col_3的SortKeyPosition=3。
对于特殊的比较规则,还需要设置Output Columns的ComparisonFlags属性
4,External Columns显示的是External columns Metadata
5,Output Columns显示的数据源组件的输出列的Metadata
ErrorRowDisposition ,Specifies how the component handles rows with errors.
TruncationRowDisposition,Specifies how the component handles rows with truncations.
这两个Disposition是为了处理数据源中列值得错误而设置的,有三种值,
RD_FailComponent,如果列值出现Error或Truncation,那么数据源组件就失败;
RD_RedirectRow,如果列值出现Error或Truncation,那么将该数据行重定向到ErrorOutput;
RD_IgnoreFailure,忽略列值出现的Error或Truncation
ComparisonFlags 用以指定排序的比较规则,Specifies the comparisons used to sort the column
SortKeyPosition Property Specifies the sort position and the sort direction of a sorted column.
0 表示Column不是Sort Key
负整数 表示column是按倒序排序,对应sql的 desc
正整数 表示column是按升序排序,对应sql的 asc