SSIS 列是否有自定义属性?
答案是肯定的。 SSIS 列是继承IDTSColumn130 接口的对象。如SSIS documentation 中所述,此接口包含一个名为CustomPropertyCollection 的属性,其中包含由组件添加到输入的IDTSCustomProperty100 对象的集合。
一些组件将一些自定义属性添加到 SSIS 列,例如 派生列转换。据我所知,一个名为FriendlyExpression 的自定义组件用于以纯文本形式存储表达式。但是,无法在 Integration Services 包设计器 (Visual Studio) 中添加自定义属性。
如何添加自定义属性?
我认为唯一的方法是以编程方式创建包并编辑这些值,或者开发一个在运行时添加这些属性的自定义 SSIS 组件。
这是一个使用 C# 读取 派生列转换 的自定义属性的示例。 (Reference)
foreach (IDTSInputColumn localIColumn in localInput.InputColumnCollection)
{
if (localIColumn.CustomPropertyCollection.Count == 2)
{
repository.AddAttribute(componentRepositoryID, localInput.Name + " [" + localIColumn.Name + "] [ID: " + localIColumn.ID.ToString() + "]", "From [" + localIColumn.UpstreamComponentName + "] " + FormatColumnDescription(localIColumn.Name, localIColumn.DataType, localIColumn.Length, localIColumn.Precision, localIColumn.Scale) + " Expression " +
localIColumn.CustomPropertyCollection["FriendlyExpression"].Value != null ? localIColumn.CustomPropertyCollection["FriendlyExpression"].Value.ToString() : "Not Available"
);
}
else
{
repository.AddAttribute(componentRepositoryID, localInput.Name + " [" + localIColumn.Name + "] [ID: " + localIColumn.ID.ToString() + "]", "From [" + localIColumn.UpstreamComponentName + "] " + FormatColumnDescription(localIColumn.Name, localIColumn.DataType, localIColumn.Length, localIColumn.Precision, localIColumn.Scale) + " Expression (See Ouput Column)");
}
//repository.AddObject(localIColumn.Name, "", ColumnEnumerator.ObjectTypes.Column, componentRepositoryID);
}
替代品
您可以将列元数据存储在外部数据源(SQL、XML、...)中并在运行时加载。或者您可以使用问题中提到的 Description 属性。